/ Published in: C++
Datoteka zaglavlja gdje je ATP lista implementirana pomocu pokazivaca
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include<iostream> using namespace std; struct podaci{ int sifra,datum; char naziv[50],vrsta[50]; float cijena; }; struct lista{ podaci zapis; lista *slijedeci; }; void InitL(lista *L){ L -> slijedeci = NULL; }; int EndL(lista *L){ lista *k = L; int i = 1; while(k -> slijedeci){ k = k -> slijedeci; i++; }; return i; }; int FirstL(lista *L){ if(L->slijedeci==NULL){return NULL;} else return 0; }; int NextL(int p, lista *L){ lista *k = L; int i = 0; while(i < p and k -> slijedeci){ k = k -> slijedeci; ++i; }; ++i; return i; }; int PreviousL(int p, lista *L){ lista *k = L; int i = 0; while( k -> slijedeci && i<p){ k = k -> slijedeci; ++i; } return i-1; }; int LocateL(podaci x, lista *L){ bool nadeno = false; int i = 0; lista *k = L -> slijedeci; while(!nadeno && k->slijedeci){ ++i; if( x.sifra == k -> zapis.sifra){ nadeno = true; break; } else k = k -> slijedeci; }; if (nadeno) return i; else return 0; }; int InsertL(podaci x, int p, lista *L){ int i=0; lista *insert,*trenutni, *zadnji; trenutni = L; zadnji = L->slijedeci; while (i<p && trenutni->slijedeci){ trenutni = trenutni->slijedeci; zadnji = zadnji->slijedeci; } insert = new lista; if(!insert) return 0; insert -> zapis = x; trenutni -> slijedeci = insert; insert -> slijedeci = zadnji; return 1; }; int DeleteL(char p[], lista *L){ if(!L) return 0; lista *k2 = L -> slijedeci; lista *k1 = L; while (k2){ if(!strcmp(p,k2->zapis.naziv)){ k1 -> slijedeci = k2 -> slijedeci; delete k2; return 1; } if(!strcmp(p,k2->zapis.vrsta)){ k1 -> slijedeci = k2 -> slijedeci; delete k2; return 1; } k1=k2; k2=k2->slijedeci; } return 0; } podaci RetrieveL(int p, lista *L){ int i = 0; lista *k = L -> slijedeci; while(i < p && k){ ++i; k = k -> slijedeci; }; return k -> zapis; }; void DeleteAllL(lista *L){ lista *k1 = L; lista *k2 = L -> slijedeci; while(k2){ delete k1; k1 = k2; k2 = k2 -> slijedeci; }; delete k1; L = NULL; };