Posted By

nzvorc on 11/12/12


Tagged

lista funkcije unos brisanje ispis pretraga vezana pokazivai


Versions (?)

Zadatak1_lista_pokazivac.h


 / 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.

  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4.  
  5. struct lista{
  6. int sifra;
  7. char vrsta[20], naziv[30];
  8. int dan, mj, god;
  9. float cijena;
  10. lista *sljedeci;
  11. lista *prethodni;
  12. };
  13.  
  14. lista *L=new lista;
  15. int sif=1;
  16.  
  17. //1. Dodavanje zapisa u listu
  18. int InsertL(int c, lista *L){
  19. if(c==0) L->sljedeci=NULL;
  20. lista *novi,*zadnji;
  21. zadnji = L;
  22. while (zadnji->sljedeci)
  23. zadnji = zadnji->sljedeci;
  24. novi = new lista;
  25. novi->prethodni=zadnji;
  26. novi->sljedeci=NULL;
  27. zadnji->sljedeci=novi;
  28. novi->sifra=sif++;
  29. if(c!=0)cin.ignore();
  30. cout<<"Unesi vrstu zivotinje: ";
  31. cin.getline(novi->vrsta, 20);
  32. cout<<"Unesi naziv zivotinje: ";
  33. cin.getline(novi->naziv, 30);
  34. cout<<"Unesi cijenu zivotinje: ";
  35. cin>>novi->cijena;
  36. cout<<"Unesi datum dostave:"<<endl;
  37. cout<<"Dan: "; cin>>novi->dan;
  38. cout<<"Mjesec: "; cin>>novi->mj;
  39. cout<<"Godina: "; cin>>novi->god;
  40. if(novi->dan>31 || novi->dan<1 || novi->mj<1 || novi->mj>12 || novi->god<1993) return 0;
  41. return 1;
  42. }
  43.  
  44. //2. Ispis zapisa liste
  45. void IspisL(int c, lista *L){
  46. lista *tekuci=L->sljedeci;
  47. while (tekuci->sljedeci)
  48. tekuci = tekuci -> sljedeci;
  49. while (tekuci!=L){
  50. cout<<"Sifra: ";
  51. if(tekuci->sifra<10) cout<<"00";
  52. else if(tekuci->sifra<100)cout<<"0";
  53. cout<<tekuci->sifra<<endl;
  54. cout<<"Vrsta: "<<tekuci->vrsta<<endl;
  55. cout<<"Naziv: "<<tekuci->naziv<<endl;
  56. cout<<"Cijena: "<<tekuci->cijena<<endl;
  57. cout<<"Datum: "<<tekuci->dan<<"."<<tekuci->mj<<"."<<tekuci->god<<endl;
  58. cout<<"---------------------" << endl;
  59. tekuci=tekuci->prethodni;
  60. }
  61. }
  62.  
  63. //3. Pretrazivaje liste
  64. int LocateL(int c, lista *L){
  65. int bz=0;
  66. lista *tekuci=L->sljedeci;
  67. while (tekuci->sljedeci)
  68. tekuci = tekuci -> sljedeci;
  69. while (tekuci!=L){
  70. if(tekuci->god<2012) { tekuci=tekuci->prethodni; continue;}
  71. if(tekuci->god==2012 && tekuci->mj<9) { tekuci=tekuci->prethodni; continue;}
  72. if(tekuci->mj==9 && tekuci->god==2012 && tekuci->dan<=23) { tekuci=tekuci->prethodni; continue;}
  73. cout<<"Sifra: ";
  74. if(tekuci->sifra<10) cout<<"00";
  75. else if(tekuci->sifra<100)cout<<"0";
  76. cout<<tekuci->sifra<<endl;
  77. cout<<"Vrsta: "<<tekuci->vrsta<<endl;
  78. cout<<"Naziv: "<<tekuci->naziv<<endl;
  79. cout<<"Cijena: "<<tekuci->cijena<<endl;
  80. cout<<"Datum dostave: "<<tekuci->dan<<"."<<tekuci->mj<<"."<<tekuci->god<<endl;
  81. cout<<"-----------------------"<<endl;
  82. tekuci=tekuci->prethodni; bz++;
  83. }
  84. return bz;
  85. }
  86.  
  87. //4. Brisanje prema nazivu
  88. int DeleteL(int c, char naziv[], lista *L){
  89. lista *tekuci = L->sljedeci, *prethodni=L;
  90. lista *sljedeci = tekuci;
  91. while (tekuci){
  92. sljedeci = sljedeci -> sljedeci;
  93. if(!strcmp(naziv, tekuci->naziv)){
  94. prethodni->sljedeci=tekuci->sljedeci;
  95. sljedeci->prethodni=tekuci->prethodni;
  96. delete tekuci;
  97. return 1;
  98. }
  99. prethodni=tekuci;
  100. tekuci = tekuci -> sljedeci;
  101. }
  102. return 0;
  103. }
  104.  
  105. //5. Brisanje prema vrsti
  106. int DeleteVrstaL(int c, char vrsta[], lista *L){
  107. lista *tekuci = L->sljedeci, *prethodni=L;
  108. lista *sljedeci = tekuci;
  109. while (tekuci){
  110. sljedeci = sljedeci -> sljedeci;
  111. if(!strcmp(vrsta, tekuci->vrsta)){
  112. prethodni->sljedeci=tekuci->sljedeci;
  113. sljedeci->prethodni=tekuci->prethodni;
  114. delete tekuci;
  115. return 1;
  116. }
  117. prethodni=tekuci;
  118. tekuci = tekuci -> sljedeci;
  119. }
  120. return 0;
  121. }
  122.  
  123. void SortL(int c, lista *L){
  124. cout<<"Nemoze se sortirat pomocu pokazivaca, Merge sort sortira pomocu polja!!!"<<endl;
  125. }

Report this snippet  

You need to login to post a comment.