Return to Snippet

Revision: 60600
at November 15, 2012 05:45 by dmacan23


Updated Code
/*
 * lista_pokazivaci.h
 *
 *  Created on: Nov 8, 2012
 *      Author: David Ante Macan
 */

#ifndef LISTA_POKAZIVACI_H_
#define LISTA_POKAZIVACI_H_

#include<iostream>
using namespace std;

int provjera = 1;

struct tziv{
	int sifra;
	char vrsta[20];
	char naziv[20];
	float cijena;
	int datum[3];
};

struct tlista{
	tziv ziv;
	tlista *kursor;
};

typedef tlista *tip;


tip FirstL(tlista *L){
	return L->kursor;
}


tip EndL(tlista *L){
	tlista *tekuci = L;
    while(tekuci->kursor){
    	tekuci=tekuci->kursor;
    }
    return tekuci->kursor;
}





tip PreviousL(tip p, tlista *L){
	if(L->kursor==NULL)
		return L;
	tlista *prosli = L->kursor;
	while(prosli->kursor!=p){
		prosli=prosli->kursor;
	}
	return prosli;
}



tip NextL(tip p, tlista *L){
	if(p->kursor==NULL)
		return EndL(L);
	return p->kursor;
}



tlista *InitL(tlista *L){
	L = new tlista;
	L->kursor = NULL;
	return L;
}


tip LocateL(tziv x, tlista *L){
	tip tekuci;
	tekuci = L->kursor;
	while(tekuci){
		if(x.sifra!=0){
			if(x.sifra == tekuci->ziv.sifra)
				return tekuci;
		}
	}
	return EndL(L);
}


int InsertL(tziv x, tlista *p, tlista *L){
	tlista *novi = new tlista;
	tlista *prosli = PreviousL(p,L);
	if(p==EndL(L)){
		novi->kursor = NULL;
		prosli->kursor = novi;
		novi->ziv = x;
	}
	else{
		novi->kursor=prosli->kursor;
		prosli->kursor = novi;
		novi->ziv = x;
	}
	if(novi->ziv.sifra == x.sifra)
		return 1;
	else
		return 0;
}

tziv RetrieveL(tip p, tlista *L){
	return p->ziv;
}


tip DeleteL(tip p, tlista *L){
    tlista *prethodni, *tekuci;
    tekuci=p;
    if(tekuci==EndL(L))return 0;
    if(p==FirstL(L)){
                     L->kursor=tekuci->kursor;
                     delete tekuci;
                     return 0;
                     }
    else{
         prethodni=PreviousL(tekuci,L);
         prethodni->kursor=tekuci->kursor;
         delete tekuci;
         return 0;
         }
    return 0;
}


tip DeleteAllL(tlista *L){
	tlista *tekuci = L->kursor;
	tlista *iduci;
	while(tekuci!=NULL){
		iduci = tekuci->kursor;
		delete tekuci;
		tekuci = iduci;
	}
	L->kursor = NULL;
	return 0;
}



void Merge(tziv array[], int i, int k, int j){
	int pocetak = i, iduci = k+1, brojilo=0, velicina = j-i+1;
	tziv *pom = new tziv[velicina];
	while(pocetak<=k && iduci<=j){
		if(array[pocetak].cijena > array[iduci].cijena)
			pom[brojilo++]=array[pocetak++];
		else if(array[pocetak].cijena < array[iduci].cijena)
			pom[brojilo++] = array[iduci++];
		if(array[pocetak].cijena == array[iduci].cijena){
			if(strcmp(array[pocetak].naziv, array[iduci].naziv)==1)
				pom[brojilo++] = array[pocetak++];
			else
				pom[brojilo++] = array[iduci++];
		}
	}

	while(pocetak<=k)
		pom[brojilo++] = array[pocetak++];
	while(iduci<=j)
		pom[brojilo++] = array[iduci++];
	for(int I=0; I<velicina; I++)
		array[i+I]=pom[I];
	delete[] pom;
}

void funkcija(tziv array[], int i, int j){
	int sredina;
	if(i<j){
		sredina = (i+j)/2;
		funkcija(array,i,sredina);
		funkcija(array,sredina+1,j);
		Merge(array,i,sredina,j);
	}
}

void MSort(tlista *L, tip i, tip j){
	if(FirstL(L)!=EndL(L)){
		int velicina = 0, brojilo = 0;
		tip zadnji;
		zadnji = L;
		while(zadnji->kursor){
			zadnji = zadnji->kursor;
			velicina++;
		}
		tziv *pom = new tziv[velicina];
		tip lokacija = L->kursor;
		while(lokacija){
			pom[brojilo++] = RetrieveL(lokacija,L);
			lokacija = lokacija->kursor;
		}
		funkcija(pom,0,velicina-1);
			for(int i=0; i<=velicina-1; i++){
				cout<<"\n\n"
					<<"Sifra zivotinje: "<<pom[i].sifra<<endl
					<<"Vrsta zivotinje: "<<pom[i].vrsta<<endl
					<<"Naziv zivotinje: "<<pom[i].naziv<<endl
					<<"Cijena zivotinje: "<<pom[i].cijena<<endl
					<<"Datum dostave: "<<pom[i].datum[2]<<"."<<pom[i].datum[1]<<"."<<pom[i].datum[0]<<"."<<endl
					<<"-------------------------------------"<<endl<<endl;
			}
	}
	else
		cout<<"Lista ne postoji ili je prazna"<<endl;
}


#endif /* LISTA_POKAZIVACI_H_ */

Revision: 60599
at November 15, 2012 05:44 by dmacan23


Updated Code
/*
 * lista_pokazivaci.h
 *
 *  Created on: Nov 8, 2012
 *      Author: David Ante Macan
 */

#ifndef LISTA_POKAZIVACI_H_
#define LISTA_POKAZIVACI_H_

#include<iostream>
using namespace std;

int provjera = 1;

struct tziv{
	int sifra;
	char vrsta[20];
	char naziv[20];
	float cijena;
	int datum[3];
};

struct tlista{
	tziv ziv;
	tlista *kursor;
};

typedef tlista *tip;


tip FirstL(tlista *L){
	return L->kursor;
}


tip EndL(tlista *L){
	tlista *tekuci = L;
    while(tekuci->kursor){
    	tekuci=tekuci->kursor;
    }
    return tekuci->kursor;
}





tip PreviousL(tip p, tlista *L){
	if(L->kursor==NULL)
		return L;
	tlista *prosli = L->kursor;
	while(prosli->kursor!=p){
		prosli=prosli->kursor;
	}
	return prosli;
}



tip NextL(tip p, tlista *L){
	if(p->kursor==NULL)
		return EndL(L);
	return p->kursor;
}



tlista *InitL(tlista *L){
	L = new tlista;
	//tlista *zadnji = new tlista;
	L->kursor = NULL;
	//zadnji->kursor = NULL;
	return L;
}


tip LocateL(tziv x, tlista *L){
	tip tekuci;
	tekuci = L->kursor;
	while(tekuci){
		if(x.sifra!=0){
			if(x.sifra == tekuci->ziv.sifra)
				return tekuci;
		}
	}
	return EndL(L);
}


int InsertL(tziv x, tlista *p, tlista *L){
	tlista *novi = new tlista;
	tlista *prosli = PreviousL(p,L);
	if(p==EndL(L)){
		novi->kursor = NULL;
		prosli->kursor = novi;
		novi->ziv = x;
	}
	else{
		novi->kursor=prosli->kursor;
		prosli->kursor = novi;
		novi->ziv = x;
	}
	if(novi->ziv.sifra == x.sifra)
		return 1;
	else
		return 0;
}

tziv RetrieveL(tip p, tlista *L){
	return p->ziv;
}


tip DeleteL(tip p, tlista *L){
    tlista *prethodni, *tekuci;
    tekuci=p;
    if(tekuci==EndL(L))return 0;
    if(p==FirstL(L)){
                     L->kursor=tekuci->kursor;
                     delete tekuci;
                     return 0;
                     }
    else{
         prethodni=PreviousL(tekuci,L);
         prethodni->kursor=tekuci->kursor;
         delete tekuci;
         return 0;
         }
    return 0;
}


tip DeleteAllL(tlista *L){
	tlista *tekuci = L->kursor;
	tlista *iduci;
	while(tekuci!=NULL){
		iduci = tekuci->kursor;
		delete tekuci;
		tekuci = iduci;
	}
	L->kursor = NULL;
	return 0;
}



void Merge(tziv array[], int i, int k, int j){
	int pocetak = i, iduci = k+1, brojilo=0, velicina = j-i+1;
	tziv *pom = new tziv[velicina];
	while(pocetak<=k && iduci<=j){
		if(array[pocetak].cijena > array[iduci].cijena)
			pom[brojilo++]=array[pocetak++];
		else if(array[pocetak].cijena < array[iduci].cijena)
			pom[brojilo++] = array[iduci++];
		if(array[pocetak].cijena == array[iduci].cijena){
			if(strcmp(array[pocetak].naziv, array[iduci].naziv)==1)
				pom[brojilo++] = array[pocetak++];
			else
				pom[brojilo++] = array[iduci++];
		}
	}

	while(pocetak<=k)
		pom[brojilo++] = array[pocetak++];
	while(iduci<=j)
		pom[brojilo++] = array[iduci++];
	for(int I=0; I<velicina; I++)
		array[i+I]=pom[I];
	delete[] pom;
}

void funkcija(tziv array[], int i, int j){
	int sredina;
	if(i<j){
		sredina = (i+j)/2;
		funkcija(array,i,sredina);
		funkcija(array,sredina+1,j);
		Merge(array,i,sredina,j);
	}
}

void MSort(tlista *L, tip i, tip j){
	if(FirstL(L)!=EndL(L)){
		int velicina = 0, brojilo = 0;
		tip zadnji;
		zadnji = L;
		while(zadnji->kursor){
			zadnji = zadnji->kursor;
			velicina++;
		}
		tziv *pom = new tziv[velicina];
		tip lokacija = L->kursor;
		while(lokacija){
			pom[brojilo++] = RetrieveL(lokacija,L);
			lokacija = lokacija->kursor;
		}
		funkcija(pom,0,velicina-1);
			for(int i=0; i<=velicina-1; i++){
				cout<<"\n\n"
					<<"Sifra zivotinje: "<<pom[i].sifra<<endl
					<<"Vrsta zivotinje: "<<pom[i].vrsta<<endl
					<<"Naziv zivotinje: "<<pom[i].naziv<<endl
					<<"Cijena zivotinje: "<<pom[i].cijena<<endl
					<<"Datum dostave: "<<pom[i].datum[2]<<"."<<pom[i].datum[1]<<"."<<pom[i].datum[0]<<"."<<endl
					<<"-------------------------------------"<<endl<<endl;
			}
	}
	else
		cout<<"Lista ne postoji ili je prazna"<<endl;
}


#endif /* LISTA_POKAZIVACI_H_ */

Revision: 60598
at November 12, 2012 02:05 by dmacan23


Initial Code
/*
 * lista_pokazivaci.h
 *
 *  Created on: Nov 8, 2012
 *      Author: David Ante Macan
 */

#ifndef LISTA_POKAZIVACI_H_
#define LISTA_POKAZIVACI_H_

#include<iostream>
using namespace std;

int provjera = 1;

struct tziv{
	int sifra;
	char vrsta[20];
	char naziv[20];
	float cijena;
	int datum[3];
};

struct tlista{
	tziv ziv;
	tlista *kursor;
};

typedef tlista *tip;

//Prvi element:
//-------------
tip FirstL(tlista *L){
	return L->kursor;
}

//Zadnji u listi:
//---------------
tip EndL(tlista *L){
	tlista *tekuci = L;
    while(tekuci->kursor){
    	tekuci=tekuci->kursor;
    }
    return tekuci->kursor;
}




//Prethodni
//---------
tip PreviousL(tip p, tlista *L){
	if(L->kursor==NULL)
		return L;
	tlista *prosli = L->kursor;
	while(prosli->kursor!=p){
		prosli=prosli->kursor;
	}
	return prosli;
}


//Sljedbenik elementa p
//---------------------
tip NextL(tip p, tlista *L){
	if(p->kursor==NULL)
		return EndL(L);
	return p->kursor;
}


//Inicijalizacija liste:
//----------------------
tlista *InitL(tlista *L){
	L = new tlista;
	//tlista *zadnji = new tlista;
	L->kursor = NULL;
	//zadnji->kursor = NULL;
	return L;
}

//Lociranje elementa liste:
//-------------------------
tip LocateL(tziv x, tlista *L){
	tip tekuci;
	tekuci = L->kursor;
	while(tekuci){
		if(x.sifra!=0){
			if(x.sifra == tekuci->ziv.sifra)
				return tekuci;
		}
	}
	return EndL(L);
}

//Dodavanje novog elementa u listu:
//---------------------------------
int InsertL(tziv x, tlista *p, tlista *L){
	tlista *novi = new tlista;
	tlista *prosli = PreviousL(p,L);
	if(p==EndL(L)){
		novi->kursor = NULL;
		prosli->kursor = novi;
		novi->ziv = x;
	}
	else{
		novi->kursor=prosli->kursor;
		prosli->kursor = novi;
		novi->ziv = x;
	}
	if(novi->ziv.sifra == x.sifra)
		return 1;
	else
		return 0;
}

tziv RetrieveL(tip p, tlista *L){
	return p->ziv;
}

//Brisanje elementa s pozicijom p iz liste
//----------------------------------------
tip DeleteL(tip p, tlista *L){
    tlista *prethodni, *tekuci;
    tekuci=p;
    if(tekuci==EndL(L))return 0;
    if(p==FirstL(L)){
                     L->kursor=tekuci->kursor;
                     delete tekuci;
                     return 0;
                     }
    else{
         prethodni=PreviousL(tekuci,L);
         prethodni->kursor=tekuci->kursor;
         delete tekuci;
         return 0;
         }
    return 0;
}


tip DeleteAllL(tlista *L){
	tlista *tekuci = L->kursor;
	tlista *iduci;
	while(tekuci!=NULL){
		iduci = tekuci->kursor;
		delete tekuci;
		tekuci = iduci;
	}
	L->kursor = NULL;
	return 0;
}


//Merge sort
//----------
void Merge(tziv array[], int i, int k, int j){
	int pocetak = i, iduci = k+1, brojilo=0, velicina = j-i+1;
	tziv *pom = new tziv[velicina];
	while(pocetak<=k && iduci<=j){
		if(array[pocetak].cijena > array[iduci].cijena)
			pom[brojilo++]=array[pocetak++];
		else if(array[pocetak].cijena < array[iduci].cijena)
			pom[brojilo++] = array[iduci++];
		if(array[pocetak].cijena == array[iduci].cijena){
			if(strcmp(array[pocetak].naziv, array[iduci].naziv)==1)
				pom[brojilo++] = array[pocetak++];
			else
				pom[brojilo++] = array[iduci++];
		}
	}

	while(pocetak<=k)
		pom[brojilo++] = array[pocetak++];
	while(iduci<=j)
		pom[brojilo++] = array[iduci++];
	for(int I=0; I<velicina; I++)
		array[i+I]=pom[I];
	delete[] pom;
}

void funkcija(tziv array[], int i, int j){
	int sredina;
	if(i<j){
		sredina = (i+j)/2;
		funkcija(array,i,sredina);
		funkcija(array,sredina+1,j);
		Merge(array,i,sredina,j);
	}
}

void MSort(tlista *L, tip i, tip j){
	if(FirstL(L)!=EndL(L)){
		int velicina = 0, brojilo = 0;
		tip zadnji;
		zadnji = L;
		while(zadnji->kursor){
			zadnji = zadnji->kursor;
			velicina++;
		}
		tziv *pom = new tziv[velicina];
		tip lokacija = L->kursor;
		while(lokacija){
			pom[brojilo++] = RetrieveL(lokacija,L);
			lokacija = lokacija->kursor;
		}
		funkcija(pom,0,velicina-1);
			for(int i=0; i<=velicina-1; i++){
				cout<<"\n\n"
					<<"Sifra zivotinje: "<<pom[i].sifra<<endl
					<<"Vrsta zivotinje: "<<pom[i].vrsta<<endl
					<<"Naziv zivotinje: "<<pom[i].naziv<<endl
					<<"Cijena zivotinje: "<<pom[i].cijena<<endl
					<<"Datum dostave: "<<pom[i].datum[2]<<"."<<pom[i].datum[1]<<"."<<pom[i].datum[0]<<"."<<endl
					<<"-------------------------------------"<<endl<<endl;
			}
	}
	else
		cout<<"Lista ne postoji ili je prazna"<<endl;
}


#endif /* LISTA_POKAZIVACI_H_ */

Initial URL


Initial Description
Zadatak kolegija "Strukture podataka" na Fakultetu Organizacije i Informatike u Varaždinu. Trebalo je napraviti program koji služi za evidenciju kućnih ljubimaca u trgovini za kućne ljubimce, i to pomoću ATP liste implementirane poljem i pokazivačima. Ovo je samo zaglavlje koje treba "glavna.cpp" kako bi radilo

Initial Title
Strukture_Podataka_Z1-lista_pokazivaci.cpp

Initial Tags


Initial Language
C++