Kod: Zaznacz cały
#include<iostream>
#include <cstdlib>
#include<cmath>
#include<windows.h>
using namespace std;
struct Lista
{
int wartosc;
Lista *wsk;
};
int wybrana;
void DodajPrzod(Lista *&start, int w);
void WypiszListe(Lista *&start);
void UsunListe(Lista *&start);
void UsunPrzod(Lista *&start);
void DodajTyl(Lista *&start,int w);
void UsunTyl(Lista *&start);
int Licznik(Lista *&start);
void UsunWybrana(Lista *&start,int wybrana);
int main()
{
short int pomoc;
int liczba;
Lista *start;
start=nullptr; //*start->NULL;
while(pomoc!=6)
{
WypiszListe(start);
cout<<"
";
cout<<"1.Dodaj element z przodu.
2.Dodaj element z tylu.
3.Usun element z przodu.
4.Usun element z tylu.
5.Usun Liste.
6.Usun wybrana liczbe.
7.Wyjdz.
Wybor : ";
cin>>pomoc;
switch(pomoc)
{
case 1:
cout<<"Jaka liczbe dodac? :";
cin>>liczba;
if(Licznik(start)<10)
DodajPrzod(start, liczba);
else {cout<<"W liscie jest juz max elementow.
"; Sleep(3000);}
break;
case 2:
cout<<"Jaka liczbe dodac?
";
cin>>liczba;
if(Licznik(start)<10)
DodajTyl(start, liczba);
else {cout<<"W liscie jest juz max elementow.
"; Sleep(3000);}
break;
case 3: UsunPrzod(start);
break;
case 4: UsunTyl(start);
break;
case 5: UsunListe(start);
break;
case 7: exit(1);
break;
case 6:{cout<<"Jaka Liczbe usunac? :
";cin>>wybrana; UsunWybrana(start,wybrana); }
default :
cout<<"Zle wybrales, program sie zepsul...
";
}
system("cls");
}
return 0;
}
void DodajPrzod(Lista *&start, int w){
Lista *p;
p=start;
p=new Lista;
p->wartosc=w;
p->wsk=start;
start=p;
}
void WypiszListe(Lista *&start){
Lista *p;
p=start;
while(p)
{
cout<<p->wartosc<<" ";
p=p->wsk;
}
}
void UsunListe(Lista *&start){
Lista *p;
while(start)
{
p=start;
start=start->wsk;
delete p;
}
}
void UsunPrzod(Lista *&start){
Lista *p;
p=start;
if(p){
start=start->wsk;
delete p;
}else cout<<"
Brak elementow w liscie";
}
void DodajTyl(Lista *&start, int w){
Lista *p,*n;
p=start;
if(p){
while(p->wsk) {p=p->wsk;}
n=new Lista;
n->wartosc=w;
n->wsk=nullptr;
p->wsk=n;
}else cout<<"
Lista Pusta";
}
void UsunTyl(Lista *&start){
Lista *p=start;
if(p)
{
if(p->wsk){
while(p->wsk->wsk) {p=p->wsk;}
delete p->wsk;
p->wsk=nullptr;
}else {
delete p;
start=nullptr;
}
}
}
int Licznik(Lista *&start){
int _ile=0;
Lista *p;
p=start;
while(p!=NULL)
{
p=p->wsk;
_ile++;
}
return _ile;
}
void UsunWybrana(Lista *&start, int wybrana)
{
Lista *p = start;
Lista *n;
while (p)
{
n = p->wsk; //bieżący to następnik poprzednika
if (n->wartosc == wybrana)
{
p->wsk = n->wsk; //wypełnij dziurę w łańcuchu
delete n;
}
else
p = p->wsk; //następny
}
}