Posted By

JosipPrimorac on 11/12/12


Tagged

listapokazivac


Versions (?)

lista_pokazivac.h


 / Published in: C++
 

lista s pokazivacima

  1. #include <cstring>
  2.  
  3. struct tziv {
  4. int sifra , d, m, g;
  5. float cijena;
  6. char naziv [20], vrsta [20];
  7. };
  8.  
  9.  
  10. struct list{
  11. tziv ziv;
  12. list *sljedeci;
  13. };
  14.  
  15. typedef list *elem;
  16.  
  17. elem EndL(list *l) {
  18. list *tekuci = l;
  19. while (tekuci->sljedeci)
  20. tekuci = tekuci->sljedeci;
  21. return tekuci;
  22. };
  23.  
  24. elem FirstL (list *l) {
  25. if (l->sljedeci)
  26. return l;
  27. else
  28. return EndL(l);
  29. };
  30.  
  31. elem NextL (elem pozicija, list *l) {
  32. if (pozicija->sljedeci)
  33. return pozicija->sljedeci;
  34. else
  35. return EndL(l);
  36. };
  37.  
  38. elem PreviousL (elem pozicija, list *l){
  39. if (pozicija == l)
  40. return 0;
  41. list *tekuci = l;
  42. while (tekuci->sljedeci) {
  43. if (tekuci->sljedeci == pozicija)
  44. return tekuci;
  45. tekuci = tekuci->sljedeci;
  46. }
  47. };
  48.  
  49. elem LocateL (tziv z, list *l) {
  50. list *tekuci = l;
  51. while (tekuci) {
  52. if (tekuci->sljedeci && tekuci->sljedeci->ziv.naziv == z.naziv)
  53. return tekuci;
  54. tekuci = tekuci->sljedeci;
  55. }
  56. return EndL(l);
  57. };
  58.  
  59. elem InsertL (tziv z, elem pozicija, list *l) {
  60. if (pozicija) {
  61. list *novi = new list;
  62.  
  63. novi->ziv.sifra = z.sifra;
  64. novi->ziv.d = z.d;
  65. novi->ziv.m = z.m;
  66. novi->ziv.cijena = z.cijena;
  67. novi->ziv.g = z.g;
  68.  
  69. strcpy (novi->ziv.vrsta, z.vrsta);
  70. strcpy (novi->ziv.naziv, z.naziv);
  71.  
  72.  
  73. if (pozicija->sljedeci){
  74. novi->sljedeci = pozicija->sljedeci;
  75. }
  76. else {
  77. novi->sljedeci = NULL;
  78. pozicija->sljedeci = novi;
  79. }
  80. }
  81. else
  82. return 0;
  83. };
  84.  
  85. elem DeleteL (elem pozicija, list *l) {
  86. if (pozicija && pozicija->sljedeci) {
  87. list *pom = pozicija->sljedeci;
  88. pozicija->sljedeci = pozicija->sljedeci->sljedeci;
  89. delete pom;
  90. }
  91. else
  92. return 0;
  93. };
  94.  
  95. tziv RetrieveL (elem pozicija, list *l) {
  96. tziv ziv;
  97. if (pozicija && pozicija->sljedeci) {
  98. ziv.sifra = pozicija->sljedeci->ziv.sifra;
  99. ziv.cijena = pozicija->sljedeci->ziv.cijena;
  100. ziv.d = pozicija->sljedeci->ziv.d;
  101. ziv.m = pozicija->sljedeci->ziv.m;
  102. ziv.g = pozicija->sljedeci->ziv.g;
  103.  
  104. strcpy (ziv.vrsta, pozicija->sljedeci->ziv.vrsta);
  105. strcpy (ziv.naziv, pozicija->sljedeci->ziv.naziv);
  106. return ziv;
  107. }
  108. };
  109.  
  110. void DeleteAllL (list *l) {
  111. list *prvi = l->sljedeci, *tekuci;
  112. while (prvi) {
  113. tekuci = prvi;
  114. prvi = prvi->sljedeci;
  115. delete tekuci;
  116. }
  117. };
  118.  
  119. list* InitL (list *l) {
  120. l = new list;
  121. l->sljedeci = NULL;
  122. return l;
  123. };

Report this snippet  

You need to login to post a comment.