Return to Snippet

Revision: 60482
at November 10, 2012 10:09 by mhudince


Initial Code
#include <cstring>

struct zivotinje {
       int sifra, cijena, d, m, g;
       char naziv [20], vrsta [30];
       };


struct LIST {
       zivotinje ziv;
       LIST *sljedeci;
       };

typedef LIST *element;


element ENDL(LIST* L) {
        LIST *tekuci = L;
        while (tekuci->sljedeci)
              tekuci = tekuci->sljedeci;
        return tekuci;
        };

element FIRSTL (LIST *L) {
        if (L->sljedeci)
           return L;
        else
             return ENDL(L);
        };

element NEXTL (element position, LIST *L) {
        if (position->sljedeci) // if (position && position->sljedeci)
           return position->sljedeci;
        else
             return ENDL(L);
        };

element PREVIOUSL (element position, LIST *L){
        if (position == L)
           return 0;
        LIST *tekuci = L;
        while (tekuci->sljedeci) {
              if (tekuci->sljedeci == position)
                 return tekuci;
                 tekuci = tekuci->sljedeci;
              }
        };

element LOCATEL (zivotinje z, LIST *L) {
        LIST *tekuci = L;
        while (tekuci) {
              if (tekuci->sljedeci && tekuci->sljedeci->ziv.naziv == z.naziv)
              return tekuci;
              tekuci = tekuci->sljedeci;
              }
        return ENDL(L);
        };

element INSERTL (zivotinje z, element position, LIST *L) {
        if (position) {
           //LIST *zadnji;
           //zadnji = L;
           LIST *novi = new LIST;
           novi->ziv.sifra = z.sifra;
           novi->ziv.d = z.d;
           novi->ziv.m = z.m;
           novi->ziv.cijena = z.cijena;
           novi->ziv.g = z.g;

           strcpy (novi->ziv.vrsta, z.vrsta);
           strcpy (novi->ziv.naziv, z.naziv);
          /**
           int br=0;
           while(br < int(position)) {
                    zadnji=zadnji->sljedeci;
                    br++;
                    }
           **/
           if (position->sljedeci){
              novi->sljedeci = position->sljedeci;
              //zadnji->sljedeci = novi;
              }
           else {
                novi->sljedeci = NULL;
                position->sljedeci = novi;
                }
           }
        else
             return 0;
        };

element DELETEL (element position, LIST *L) {
    if (position && position->sljedeci) {
       LIST *pom = position->sljedeci;
       position->sljedeci = position->sljedeci->sljedeci;
       delete pom;
    }
    else
         return 0;
    };

zivotinje RETRIEVEL (element position, LIST *L) {
          zivotinje ziv;
          if (position && position->sljedeci) {
             ziv.sifra = position->sljedeci->ziv.sifra;
             ziv.cijena = position->sljedeci->ziv.cijena;
             ziv.d = position->sljedeci->ziv.d;
             ziv.m = position->sljedeci->ziv.m;
             ziv.g = position->sljedeci->ziv.g;

             strcpy (ziv.vrsta, position->sljedeci->ziv.vrsta);
             strcpy (ziv.naziv, position->sljedeci->ziv.naziv);
             return ziv;
             }
          };

void DELETEALLL (LIST *L) {
     LIST *prvi = L->sljedeci, *tekuci;
     while (prvi) {
           tekuci = prvi;
           prvi = prvi->sljedeci;
           delete tekuci;
           }
     };

LIST* INITL (LIST *L) {
      L = new LIST;
      L->sljedeci = NULL;
      return L;
      };

Initial URL
mhudince3

Initial Description
zadatak za SP

Initial Title
Strukture_podataka_zad_1 (lista_pokazivac.h)

Initial Tags
c++

Initial Language
C++