1. Stvorite jednostavnu vezanu listu sa podacima o proizvodima (naziv, šifra, kolicina). Napišite slijedeće funkcije:
-Za dodavanje novog elementa u listu.
-Za ispis elemenata.
-Za brisanje elementa liste.
U main funkciji nakon stvorene liste pozovite funkciju za dodavanje 3 elementa u listu, pa funkciju za ispis liste i izbrišite odabrani element liste. Ispišite ponovo listu, dealocirajte listu.
#include<iostream.h>
#include<string.h>
using namespace std;
struct proizvod
{
char naziv[30];
int sifra;
int kolicina;
proizvod *slijedeci;
};
void unos(proizvod *x)
{
while(x->slijedeci)
x=x->slijedeci;
x->slijedeci=new proizvod;
x=x->slijedeci;
cout<<"NAZIV PROIZVODA:";
cin.ignore();
cin.getline(x->naziv,30);
cout<<"SIFRA:";
cin>>x->sifra;
cout<<"KOLICINA:";
cin>>x->kolicina;
x->slijedeci=NULL;
}
void ispis(proizvod *x)
{
x=x->slijedeci;
while(x->slijedeci)
{
cout<<"NAZIV PROIZVODA:"<<x->naziv<<endl;
cout<<"SIFRA:"<<x->sifra<<endl;
cout<<"KOLICINA:"<<x->kolicina<<endl<<endl;
x=x->slijedeci;
}
cout<<"NAZIV PROIZVODA:"<<x->naziv<<endl;
cout<<"SIFRA:"<<x->sifra<<endl;
cout<<"KOLICINA:"<<x->kolicina<<endl<<endl;
}
void brisi(proizvod *x)
{
proizvod *prethodni;
int sifra;
cout<<"Unesite sifru proizvoda kojeg zelite izbrisati:";
cin>>sifra;
cout<<endl;
prethodni=x;
x=x->slijedeci;
while(x->slijedeci)
{
if(sifra==x->sifra)
{
proizvod *temp=prethodni->slijedeci;
prethodni->slijedeci=x->slijedeci;
delete temp;
x=prethodni->slijedeci;
break;
}
prethodni=prethodni->slijedeci;
x=prethodni->slijedeci;
}
if(sifra==x->sifra)
{
proizvod *temp=prethodni->slijedeci;
prethodni->slijedeci=x->slijedeci;
delete temp;
}
}
proizvod* dealociraj(proizvod *x)
{
proizvod *temp;
while(x->slijedeci)
{
temp=x;
x=x->slijedeci;
delete temp;
}
delete x;
x=NULL;
return x;
}
void main()
{
proizvod *lista=new proizvod;
lista->slijedeci=NULL;
for(int i=0;i<3;i++)
{
unos(lista);
cout<<endl;
}
cout<<endl<<endl;
ispis(lista);
cout<<endl<<endl;
brisi(lista);
ispis(lista);
lista=dealociraj(lista);
}
Preuzmite projekt: zad_1.cpp.
2. Stvorite jednostavnu vezanu listu s podacima o studentima. Ponuditi korisniku izbornik s osnovnim operacijama:
-dodavanje novih elemenata u listu,
-ispis sadržaja liste,
-brisanje elementa liste,
-dealokacija liste i
-izlaz iz programa.
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
struct student
{
char ime[15];
char prezime[15];
int jmbag;
student *nxt;
};
void unos(student *x)
{
while(x->nxt)x=x->nxt;
x->nxt=new student;
x=x->nxt;
cout<<endl<<"Ime: ";
cin.ignore();
cin.getline(x->ime,15);
cout<<"Prezime: ";
cin.getline(x->prezime,15);
cout<<"JMBAG: ";
cin>>x->jmbag;
x->nxt=NULL;
}
void ispis(student *x)
{
cout<<setfill('-')<<setw(80)<<"-"<<endl;
x=x->nxt;
while(x->nxt)
{
cout<<"Ime studenta:"<<x->ime<<endl;
cout<<"Prezime studenta:"<<x->prezime<<endl;
cout<<"JMBAG:"<<x->jmbag<<endl<<endl;
x=x->nxt;
}
cou<<"Ime:"<<x->ime<<endl;
cout<<"Prezime:"<<x->prezime<<endl;
cout<<"JMBAG:"<<x->jmbag<<endl<<endl;
cout<<setfill('-')<<setw(80)<<"-"<<endl;
}
void brisanje(student *x)
{
student *temp;
int jmbag;
cout<<"Unesite JMBAG studenta kojeg zelite izbrisati: ";
cin>>jmbag;
temp=x;
x=x->nxt;
while(x->nxt)
{
if(jmbag==x->jmbag)
{
student *lokacija=temp->nxt;
temp->nxt=x->nxt;
delete lokacija;
x=temp->nxt;
break;
}
temp=temp->nxt;
x=temp->nxt;
}
if(jmbag==x->jmbag)
{
student *lokacija=temp->nxt;
temp->nxt=x->nxt;
delete lokacija;
}
}
student *dealociraj(student *x)
{
student *temp;
while(x->nxt){
temp=x;
x=x->nxt;
delete temp;}
delete x;
x=NULL;
return x;
}
void main()
{
student *lista=new student;
lista->nxt=NULL;
cout<<"Izaberite opciju: "<<endl;
cout<<"0. Izlaz."<<endl;
cout<<"1. Dodaj novi unos u list."<<endl;
cout<<"2. Ispisi listu."<<endl;
cout<<"3. Izbrisi odredeni unos s liste."<<endl;
int option;
do
{
cout<<endl<<" >> ";
cin>>option;
switch(option)
{
case 1:
unos(lista);break;
case 2:
ispis(lista);break;
case 3:
brisanje(lista);break;
}
}
while(option!=0);
lista=dealociraj(lista);
}
Preuzmite projekt: zad_2.cpp.