Return to Snippet

Revision: 61424
at December 11, 2012 22:37 by idurlen1


Initial Code
#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();

Initial URL


Initial Description
zadatak iz SP-a

Initial Title
lista_pokazivac.h

Initial Tags
data, list, podataka

Initial Language
C++