/ Published in: C++
zadatak iz SP-a
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include <iostream> #include <cstring> using namespace std; struct podaci{ long sifra; char naziv[50], vrsta[60]; float cijena; int dan, mj, god; podaci *pret, *slj; };// struct podaci *Lista; void InitL(){ Lista = new podaci; Lista->pret = NULL; Lista->slj = NULL; } int FirstL(){ if (Lista->slj) return 0; }// FirstL(); int LastL(){ if (Lista->slj == 0) return 0; podaci *zadnji; zadnji = Lista; int i = 0; while(zadnji->slj){ zadnji = zadnji->slj; i++; } return i; }//LastL(); int LocateL1(char naziv[]){ int i, j; i = 0; bool nadjeno = false; podaci *element = Lista; while(element->slj){ if (strcmp(element->naziv, naziv) == 0){ nadjeno = true; break; } element = element->slj; i++; } if (nadjeno) return i; else return -1; }// LocateL1(); int LocateL2(char naziv[]){ int i, j; i = 0; bool nadjeno = false; podaci *element = Lista; while(element->slj){ if (strcmp(element->vrsta, naziv) == 0){ nadjeno = true; break; } element = element->slj; i++; } if (nadjeno) return i; else return -1; }// LocateL2(); int InsertL(int pozicija, podaci P){ podaci *zadnji, *novi; zadnji = Lista; while(zadnji->slj) zadnji = zadnji->slj; novi = new podaci; novi->pret = zadnji; novi->slj = NULL; zadnji->slj = novi; strcpy(zadnji->naziv, P.naziv); zadnji->sifra = P.sifra; strcpy(zadnji->vrsta, P.vrsta); zadnji->cijena = P.cijena; zadnji->dan = P.dan; zadnji->mj = P.mj; zadnji->god = P.god; return 0; }// InsertL(); int DeleteL1(char naziv[]){ podaci *prethodni, *element, *sljedeci; element = Lista->slj; bool nadjen = false; if (LocateL1(naziv) == -1) return 0; if(LocateL1( naziv) == 0){ if(element->slj){ sljedeci = element->slj; prethodni = element->pret; sljedeci->pret = prethodni; prethodni->slj = sljedeci; delete element; } else{ Lista->slj = NULL; delete element; } nadjen = true; } else{ while(element){ if (strcmp(element->naziv, naziv) == 0){ sljedeci = element->slj; prethodni = element->pret; sljedeci->pret = prethodni; prethodni->slj = sljedeci; delete element; nadjen = true; break; } else element = element->slj; } } if(nadjen) return 1; else return 0; }// DeleteL1(); int DeleteL2(char naziv[]){ podaci *prethodni, *element, *sljedeci; element = Lista->slj; bool nadjen = false; if (LocateL2(naziv) == -1) return 0; if(LocateL2( naziv) == 0){ if(element->slj){ sljedeci = element->slj; sljedeci->pret = Lista; Lista->slj = sljedeci; delete element; } else{ Lista->slj = NULL; delete element; } nadjen = true; } while(element){ if (strcmp(element->vrsta, naziv) == 0){ prethodni = element->pret; sljedeci = element->slj; sljedeci->pret = prethodni; prethodni->slj = sljedeci; delete element; nadjen = true; break; } else element = element->slj; } if(nadjen) return 1; else return 0; }// DeleteL2(); podaci RetreiveL(int indeks){ podaci *element; element = Lista; podaci pod; for (int i = 0; i<indeks; i++) element = element->slj; strcpy(pod.naziv, element->naziv); pod.sifra = element->sifra; strcpy(pod.vrsta, element->vrsta); pod.cijena = element->cijena; pod.dan = element->dan; pod.mj = element->mj; pod.god = element->god; return pod; }// RetreiveL();