/ Published in: C++
Ovo je datoteka zaglavlja lista_pokazivac.h u kojoj se nalazi implementacija liste pomoću pokazivaÄa. RijeÅ¡enje je realizirano pomoću tkz. vezane liste.
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include<iostream> #include<cstring> using namespace std; struct lista{ int sifra; char vrsta[20], naziv[30]; int dan, mj, god; float cijena; lista *sljedeci; lista *prethodni; }; lista *L=new lista; int sif=1; //1. Dodavanje zapisa u listu int InsertL(int c, lista *L){ if(c==0) L->sljedeci=NULL; lista *novi,*zadnji; zadnji = L; while (zadnji->sljedeci) zadnji = zadnji->sljedeci; novi = new lista; novi->prethodni=zadnji; novi->sljedeci=NULL; zadnji->sljedeci=novi; novi->sifra=sif++; if(c!=0)cin.ignore(); cout<<"Unesi vrstu zivotinje: "; cin.getline(novi->vrsta, 20); cout<<"Unesi naziv zivotinje: "; cin.getline(novi->naziv, 30); cout<<"Unesi cijenu zivotinje: "; cin>>novi->cijena; cout<<"Unesi datum dostave:"<<endl; cout<<"Dan: "; cin>>novi->dan; cout<<"Mjesec: "; cin>>novi->mj; cout<<"Godina: "; cin>>novi->god; if(novi->dan>31 || novi->dan<1 || novi->mj<1 || novi->mj>12 || novi->god<1993) return 0; return 1; } //2. Ispis zapisa liste void IspisL(int c, lista *L){ lista *tekuci=L->sljedeci; while (tekuci->sljedeci) tekuci = tekuci -> sljedeci; while (tekuci!=L){ cout<<"Sifra: "; if(tekuci->sifra<10) cout<<"00"; else if(tekuci->sifra<100)cout<<"0"; cout<<tekuci->sifra<<endl; cout<<"Vrsta: "<<tekuci->vrsta<<endl; cout<<"Naziv: "<<tekuci->naziv<<endl; cout<<"Cijena: "<<tekuci->cijena<<endl; cout<<"Datum: "<<tekuci->dan<<"."<<tekuci->mj<<"."<<tekuci->god<<endl; cout<<"---------------------" << endl; tekuci=tekuci->prethodni; } } //3. Pretrazivaje liste int LocateL(int c, lista *L){ int bz=0; lista *tekuci=L->sljedeci; while (tekuci->sljedeci) tekuci = tekuci -> sljedeci; while (tekuci!=L){ if(tekuci->god<2012) { tekuci=tekuci->prethodni; continue;} if(tekuci->god==2012 && tekuci->mj<9) { tekuci=tekuci->prethodni; continue;} if(tekuci->mj==9 && tekuci->god==2012 && tekuci->dan<=23) { tekuci=tekuci->prethodni; continue;} cout<<"Sifra: "; if(tekuci->sifra<10) cout<<"00"; else if(tekuci->sifra<100)cout<<"0"; cout<<tekuci->sifra<<endl; cout<<"Vrsta: "<<tekuci->vrsta<<endl; cout<<"Naziv: "<<tekuci->naziv<<endl; cout<<"Cijena: "<<tekuci->cijena<<endl; cout<<"Datum dostave: "<<tekuci->dan<<"."<<tekuci->mj<<"."<<tekuci->god<<endl; cout<<"-----------------------"<<endl; tekuci=tekuci->prethodni; bz++; } return bz; } //4. Brisanje prema nazivu int DeleteL(int c, char naziv[], lista *L){ lista *tekuci = L->sljedeci, *prethodni=L; lista *sljedeci = tekuci; while (tekuci){ sljedeci = sljedeci -> sljedeci; if(!strcmp(naziv, tekuci->naziv)){ prethodni->sljedeci=tekuci->sljedeci; sljedeci->prethodni=tekuci->prethodni; delete tekuci; return 1; } prethodni=tekuci; tekuci = tekuci -> sljedeci; } return 0; } //5. Brisanje prema vrsti int DeleteVrstaL(int c, char vrsta[], lista *L){ lista *tekuci = L->sljedeci, *prethodni=L; lista *sljedeci = tekuci; while (tekuci){ sljedeci = sljedeci -> sljedeci; if(!strcmp(vrsta, tekuci->vrsta)){ prethodni->sljedeci=tekuci->sljedeci; sljedeci->prethodni=tekuci->prethodni; delete tekuci; return 1; } prethodni=tekuci; tekuci = tekuci -> sljedeci; } return 0; } void SortL(int c, lista *L){ cout<<"Nemoze se sortirat pomocu pokazivaca, Merge sort sortira pomocu polja!!!"<<endl; }