Revision: 60600
Updated Code
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
Updated Code
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
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
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++