Return to Snippet

Revision: 60601
at November 12, 2012 02:05 by nzvorc


Initial Code
#include<iostream>
#include<cstring>
using namespace std;

struct lista{
       int sifra;
       char vrsta[20], naziv[30];
       int dan, mj, god;
       float cijena;
       lista *sljedeci;
       lista *prethodni;
       };
       
lista *L=new lista;
int sif=1; 

//1. Dodavanje zapisa u listu
int InsertL(int c, lista *L){
    if(c==0) L->sljedeci=NULL;
    lista *novi,*zadnji;
    zadnji = L;
    while (zadnji->sljedeci)
          zadnji = zadnji->sljedeci;       
    novi = new lista;                
    novi->prethodni=zadnji;
    novi->sljedeci=NULL;
    zadnji->sljedeci=novi;
    novi->sifra=sif++;
    if(c!=0)cin.ignore();
    cout<<"Unesi vrstu zivotinje: ";
    cin.getline(novi->vrsta, 20);
    cout<<"Unesi naziv zivotinje: ";
    cin.getline(novi->naziv, 30);
    cout<<"Unesi cijenu zivotinje: ";
    cin>>novi->cijena;
    cout<<"Unesi datum dostave:"<<endl;
    cout<<"Dan: "; cin>>novi->dan;
    cout<<"Mjesec: "; cin>>novi->mj;
    cout<<"Godina: "; cin>>novi->god;
    if(novi->dan>31 || novi->dan<1 || novi->mj<1 || novi->mj>12 || novi->god<1993) return 0;
    return 1;
    }

//2. Ispis zapisa liste
void IspisL(int c, lista *L){
     lista *tekuci=L->sljedeci;
     while (tekuci->sljedeci)
           tekuci = tekuci -> sljedeci;  
     while (tekuci!=L){
           cout<<"Sifra: ";
           if(tekuci->sifra<10) cout<<"00";
           else if(tekuci->sifra<100)cout<<"0";
           cout<<tekuci->sifra<<endl; 
           cout<<"Vrsta: "<<tekuci->vrsta<<endl; 
           cout<<"Naziv: "<<tekuci->naziv<<endl; 
           cout<<"Cijena: "<<tekuci->cijena<<endl; 
           cout<<"Datum: "<<tekuci->dan<<"."<<tekuci->mj<<"."<<tekuci->god<<endl; 
           cout<<"---------------------" << endl;
           tekuci=tekuci->prethodni;
           }  
     }
     
//3. Pretrazivaje liste     
int LocateL(int c, lista *L){
     int bz=0;
     lista *tekuci=L->sljedeci;
     while (tekuci->sljedeci)
           tekuci = tekuci -> sljedeci;  
     while (tekuci!=L){
               if(tekuci->god<2012) { tekuci=tekuci->prethodni; continue;}
               if(tekuci->god==2012 && tekuci->mj<9) { tekuci=tekuci->prethodni; continue;}
               if(tekuci->mj==9 && tekuci->god==2012 && tekuci->dan<=23) { tekuci=tekuci->prethodni; continue;}
               cout<<"Sifra: ";
               if(tekuci->sifra<10) cout<<"00";
               else if(tekuci->sifra<100)cout<<"0";
               cout<<tekuci->sifra<<endl;
               cout<<"Vrsta: "<<tekuci->vrsta<<endl;
               cout<<"Naziv: "<<tekuci->naziv<<endl;
               cout<<"Cijena: "<<tekuci->cijena<<endl;
               cout<<"Datum dostave: "<<tekuci->dan<<"."<<tekuci->mj<<"."<<tekuci->god<<endl;
               cout<<"-----------------------"<<endl;  
               tekuci=tekuci->prethodni; bz++;
               }
     return bz;
     }

//4. Brisanje prema nazivu   
int DeleteL(int c, char naziv[], lista *L){
  lista *tekuci = L->sljedeci, *prethodni=L;
  lista *sljedeci = tekuci;
  while (tekuci){
    sljedeci = sljedeci -> sljedeci;
    if(!strcmp(naziv, tekuci->naziv)){
             prethodni->sljedeci=tekuci->sljedeci;
             sljedeci->prethodni=tekuci->prethodni;
             delete tekuci;
             return 1;                                    
    } 
    prethodni=tekuci;
    tekuci = tekuci -> sljedeci;
  }
  return 0;
}

//5. Brisanje prema vrsti 
int DeleteVrstaL(int c, char vrsta[], lista *L){
  lista *tekuci = L->sljedeci, *prethodni=L;
  lista *sljedeci = tekuci;
  while (tekuci){
    sljedeci = sljedeci -> sljedeci;
    if(!strcmp(vrsta, tekuci->vrsta)){
             prethodni->sljedeci=tekuci->sljedeci;
             sljedeci->prethodni=tekuci->prethodni;
             delete tekuci;
             return 1;                             
             } 
    prethodni=tekuci;
    tekuci = tekuci -> sljedeci;
  }
  return 0;
}

void SortL(int c, lista *L){
     cout<<"Nemoze se sortirat pomocu pokazivaca, Merge sort sortira pomocu polja!!!"<<endl;
     }

Initial URL


Initial Description
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.

Initial Title
Zadatak1_lista_pokazivac.h

Initial Tags


Initial Language
C++