/ Published in: C++
implementacija liste pomocu pokazivaca za 1. zadatak iz kolegija Strukture podataka 2012/2013
Expand |
Embed | Plain Text
#include <iostream> #include <cstring> using namespace std; struct zivotinje{ int sifra, datum; char vrsta[20], naziv[30]; float cijena; }; struct tLista{ zivotinje zivotinja; tLista *sljedeci; }; typedef tLista *element; element EndL(tLista *L){ tLista *tekuci = L; while(tekuci -> sljedeci) tekuci = tekuci->sljedeci; return tekuci; } element FirstL(tLista *L){ return L -> sljedeci; } element NextL(element p, tLista *L){ if(p -> sljedeci == NULL) return EndL(L); return p -> sljedeci; }; element PreviousL(element p, tLista *L){ tLista *tekuci = L -> sljedeci; while(p != tekuci -> sljedeci && tekuci -> sljedeci!= NULL) tekuci = tekuci-> sljedeci; return tekuci; }; element LocateL(zivotinje x, tLista *L){ element tekuci; tekuci = L -> sljedeci; while(tekuci){ if(x.naziv !=0){ //if (tekuci == EndL(L)) return EndL(L); if(strcmp(x.naziv, tekuci -> zivotinja.naziv) == 0) return tekuci; } if(x.vrsta !=0){ if(strcmp(x.vrsta, tekuci -> zivotinja.vrsta) == 0) return tekuci; } tekuci = tekuci->sljedeci; } return EndL(L); }; int InsertL(zivotinje x, tLista *p, tLista *L){ tLista *tekuci = p; tLista *novi = new tLista; if(p == EndL(L)){ novi -> sljedeci = NULL; tekuci -> sljedeci = novi; tekuci -> zivotinja = x; } else if(p == FirstL(L)){ novi -> sljedeci = tekuci; L -> sljedeci = novi; novi -> zivotinja = x; } else{ tLista *prethodni = PreviousL(p,L); novi -> sljedeci = tekuci; prethodni -> sljedeci = novi; novi -> zivotinja = x; } if(tekuci -> zivotinja.sifra == x.sifra) return 1; else return 0; }; int DeleteL(element p, tLista *L){ element prethodni, tekuci; tekuci = p; if(p == FirstL(L)){ L -> sljedeci = tekuci -> sljedeci; delete tekuci; return 1; } else{ prethodni = PreviousL(tekuci,L); prethodni -> sljedeci = tekuci -> sljedeci; delete tekuci; return 1; } return 0; }; zivotinje RetrieveL(element p, tLista *L){ return p -> zivotinja; }; void DeleteAllL(tLista *L){ tLista *brisi = L; while(L -> sljedeci != NULL) { brisi= L ->sljedeci; L -> sljedeci=brisi->sljedeci; delete brisi; } } tLista* InitL(tLista *L){ L = new tLista; tLista *zadnji = new tLista; L -> sljedeci = zadnji; zadnji -> sljedeci = NULL; return L; };
You need to login to post a comment.
