Table of Contents

Zadatak:

Potrebno je realizovati u programskom jeziku C skup funkcija za rad sa listom cije je ponasanje isto kao ponasanje podataka tipa liste iz pseudojezika. Funkcije za rad sa listom treba da se zovu isto kao i u pseudojeziku(find_bolp, insert, move_forward…) i treba da budu realizovane u zasebnoj implementacionoj .c datoteci. Takodje je potrebno napraviti odgovarajucu definicionu. h (header) datoteku u kojoj ce biti deklarisani svi potrebni tipovi podataka i prototipovi koriscenih funkcija. Podaci se u listi skladiste preko generickog pokazivaca (void*), a potrebnoje obezbediti brisanje podataka sadrzanih u listi kroz call-back mehanizam. Napraviti inicializacionu funkciju koja inicijalizuje listu i koja postavlja odgovarajucu funkciju koja se poziva kroz call-back mehanizam pri unistavanju liste. Pointer na ovu funkciju se prosledjuje kao argument funkcije za inicijalizaciju liste. U listu je iz teksutalne datoteke potrebno procitati podatke o studentima. Podaci su u fajl slozeni tako da u jednom redu ime i prezime studenta, u drugom broj indeksa u formatu Broj/GodinaUpisa i u trecem prosek studenta. Nakon citanja iz datoteke, upisati sve podatke o studentima iz liste u novu binarnu datoteku i to tako da se upisuju samo podaci o studentima sa prosekom vecim od 8,5.

Resenje:

  • Zadatak demonstrira pravljenje “pametne” liste
  • Lista je genericka
  • Programer se obraca objektu liste, ne njenim pokazivacima
  • Objekat liste “zna” da li je tekuci element**
  1. na pocektu liste
  2. na kraju liste
  3. u sredini
  • Objektu liste se dostavlja element za ubacivanje
  • Objektu liste se dostavlja nacin brisanja pojedinacnih elemenata (u vidu funkcije)

pl_list.h

pl_list.h
 
	#define TRUE 1
	#define FALSE 0
 
	typedef enum {	lsBOLP = 0,	lsEOLP,	lsCURRENT	} TListStatus;
	struct SListElement
	{
		void *pData;
		struct SListElement *pNext;
	};
 
	struct SList
	{
		TListStatus lsStatus;
		struct SListElement *pHead;
		struct SListElement *pCurrent;
		void (*destructor) (void *);
	};
 
	typedef struct SListElement TListElement;
	typedef struct SList TList;
 
	void initialize_list (TList *pList,	void (*destructor) (void *));
	void find_bolp (TList *pList);
	int move_forward (TList *pList);
	int insert (TList *pList, void *pData);
	void *get (TList *pList);
	void destroy_list (TList *pList);
	int eolp (TList *pList);
 
sssssss.txt · Last modified: 2013/01/23 00:34 by aleksandar.mladenovic
 
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki