Return to Snippet

Revision: 60533
at November 11, 2012 05:43 by frafajec


Updated Code
#include<iostream>
using namespace std;
struct podaci{
       int sifra,datum;
       char naziv[50],vrsta[50];
       float cijena;
};
struct lista{
       podaci zapis;
       lista *slijedeci;
};

void InitL(lista *L){
     L -> slijedeci = NULL;
};
int EndL(lista *L){
    lista *k = L;
    int i = 1;
    while(k -> slijedeci){
              k = k -> slijedeci;
              i++;
    };
    return i;
};
int FirstL(lista *L){
    if(L->slijedeci==NULL){return NULL;}
    else return 0;
};
int NextL(int p, lista *L){
    lista *k = L;
    int i = 0;
    while(i < p and k -> slijedeci){
              k = k -> slijedeci;
              ++i;
    };
    ++i;
    return i;
};
int PreviousL(int p, lista *L){
    lista *k = L;
    int i = 0;
    while( k -> slijedeci && i<p){
           k = k -> slijedeci;
           ++i;
           }
    return i-1;
};
int LocateL(podaci x, lista *L){
    bool nadeno = false;
    int i = 0;
    lista *k = L -> slijedeci;
    while(!nadeno && k->slijedeci){
                 ++i;
                 if( x.sifra == k -> zapis.sifra){
                         nadeno = true;
                         break;
                 }
                 else k = k -> slijedeci;
    };
    if (nadeno) return i;
    else return 0;
};
int InsertL(podaci x, int p, lista *L){
  int i=0;
  lista *insert,*trenutni, *zadnji;
  trenutni = L;
  zadnji = L->slijedeci;
  while (i<p && trenutni->slijedeci){
    trenutni = trenutni->slijedeci;
    zadnji = zadnji->slijedeci;
    }       
  insert = new lista;
  if(!insert) return 0;
  insert -> zapis = x;
  trenutni -> slijedeci = insert;
  insert -> slijedeci = zadnji;
  return 1;
};
int DeleteL(char p[], lista *L){
    if(!L)
          return 0;
    lista *k2 = L -> slijedeci;
    lista *k1 = L;
    while (k2){
          if(!strcmp(p,k2->zapis.naziv)){
             k1 -> slijedeci = k2 -> slijedeci;
             delete k2;
             return 1;
            }
          if(!strcmp(p,k2->zapis.vrsta)){
             k1 -> slijedeci = k2 -> slijedeci;
             delete k2;
             return 1;
            }
          k1=k2;
          k2=k2->slijedeci;
          }
    return 0;
}    
podaci RetrieveL(int p, lista *L){
          int i = 0;
          lista *k = L -> slijedeci;
          while(i < p && k){
               ++i;
               k = k -> slijedeci;
          };
          return k -> zapis;
};
void DeleteAllL(lista *L){
     lista *k1 = L;
     lista *k2 = L -> slijedeci;
     while(k2){
          delete k1;
          k1 = k2;
          k2 = k2 -> slijedeci;
     };
     delete k1;
     L = NULL;
};

Revision: 60532
at November 11, 2012 04:11 by frafajec


Initial Code
#include<iostream>
using namespace std;
struct podaci{
       int sifra,datum;
       char naziv[50],vrsta[50];
       float cijena;
};
struct lista{
       podaci zapis;
       lista *slijedeci;
};

void InitL(lista *L){
     L -> slijedeci = NULL;
};
int EndL(lista *L){
    lista *k = L;
    int i = 1;
    while(k -> slijedeci){
              k = k -> slijedeci;
              i++;
    };
    return i;
};
lista *FirstL(lista *L){
    if(L->slijedeci==NULL){return NULL;}
    else return L->slijedeci;
};
int NextL(int p, lista *L){
    lista *k = L;
    int i = 0;
    while(i < p and k -> slijedeci){
              k = k -> slijedeci;
              ++i;
    };
    ++i;
    return i;
};
int PreviousL(int p, lista *L){
    lista *k = L;
    int i = 0;
    while( k -> slijedeci && i<p){
           k = k -> slijedeci;
           ++i;
           }
    return i-1;
};
int LocateL(podaci x, lista *L){
    bool nadeno = false;
    int i = 0;
    lista *k = L -> slijedeci;
    while(!nadeno && k->slijedeci){
                 ++i;
                 if( x.sifra == k -> zapis.sifra){
                         nadeno = true;
                         break;
                 }
                 else k = k -> slijedeci;
    };
    if (nadeno) return i;
    else return 0;
};
int InsertL(podaci x, int p, lista *L){
  int i=0;
  lista *insert,*trenutni, *zadnji;
  trenutni = L;
  zadnji = L->slijedeci;
  while (i<p && trenutni->slijedeci){
    trenutni = trenutni->slijedeci;
    zadnji = zadnji->slijedeci;
    }       
  insert = new lista;
  if(!insert) return 0;
  insert -> zapis = x;
  trenutni -> slijedeci = insert;
  insert -> slijedeci = zadnji;
  return 1;
};
int DeleteL(char p[], lista *L){
    if(!L)
          return 0;
    lista *k2 = L -> slijedeci;
    lista *k1 = L;
    while (k2){
          if(!strcmp(p,k2->zapis.naziv)){
             k1 -> slijedeci = k2 -> slijedeci;
             delete k2;
             return 1;
            }
          if(!strcmp(p,k2->zapis.vrsta)){
             k1 -> slijedeci = k2 -> slijedeci;
             delete k2;
             return 1;
            }
          k1=k2;
          k2=k2->slijedeci;
          }
    return 0;
}    
podaci RetrieveL(int p, lista *L){
          int i = 0;
          lista *k = L -> slijedeci;
          while(i < p && k){
               ++i;
               k = k -> slijedeci;
          };
          return k -> zapis;
};
void DeleteAllL(lista *L){
     lista *k1 = L;
     lista *k2 = L -> slijedeci;
     while(k2){
          delete k1;
          k1 = k2;
          k2 = k2 -> slijedeci;
     };
     delete k1;
     L = NULL;
};

Initial URL

                                

Initial Description
Datoteka zaglavlja gdje je ATP lista implementirana pomocu pokazivaca

Initial Title
lista_pokazivaci.h

Initial Tags
podataka

Initial Language
C++