Programiranje - C++ zadaci (liste)

struct liste{liste *nxt};

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.

<<Home