0% found this document useful (0 votes)
17 views27 pages

All

Uploaded by

xxejeyexx
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views27 pages

All

Uploaded by

xxejeyexx
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 27

//Vectori

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <iostream>

using namespace std;

struct vector{
int * vect;
int dim; //dim totala
int n; //nr elem
};

vector *init(int dim){ // * -> alocam memorie;


vector* v = new vector;
v->dim = dim;
v->n = 0;

v->vect = new int[dim];


return v;
}

void intrare(vector *v){


redo:
if(v==NULL){ cout<<"memorie nealocata";}
cout<<"Dati Numarul de elemente";
cin>>v->n;
if(v->n>v->dim){ cout<<"numarul de elemente este incorect:"<<endl; goto redo;}
else {

for(int i=0;i<v->n;i++){
cout<<"v["<<i<<"]= ";
cin>>v->vect[i];
}

}
}

void afisare(vector* v)
{
if (v == NULL) cout << "Memorie nealocata" << endl;

else if (v->n == 0) cout << "Vectorul este gol" << endl;

else{
for (int i = 0; i < v->n; i++){
cout << v->vect[i] << " ";}
cout << endl;
}

return;
}
void insert_sfarsit(vector *v , int val){
if(v==NULL) cout<<"memorie nealocata";
else if (v->n==v->dim) cout<<"vectorul este la capacitate maxima";
else {
v->vect[v->n]=val;
v->n++;
cout<<"inserare executata cu succes";}
return;

void insert_inceput( vector *v,int val){


if(v==NULL) cout<<"memorie nealocata";
else if (v->n==v->dim) cout<<"vectorul este la capacitate maxima";
else {
for(int i = v->n; i > 0; i--){
v->vect[i] = v->vect[i - 1];
}
v->vect[0]=val;
v->n++;
cout<<"inserare executata cu succes";
}
return;
}

void insert_mijloc ( vector *v, int val ){


poz:
int poz;
cout<<"pozitie= "<<endl;
cin>>poz;
if(v==NULL) cout<<"memorie nealocata";
else if(v->n==v->dim) cout<<"vectorul este la capacitate maxima";
else if (poz>v->n) {cout<<"pozitia data este incorecta"<<endl; goto poz;}
else{
for(int i = v->n; i > poz; i--){
v->vect[i] = v->vect[i - 1];
}

v->vect[poz]=val;
v->n++;
cout<<"inserare executata cu succes";
}
return;
}

void stergere_inceput (vector *v){ //??


if(v==NULL) cout<<"Memorie Nealocata"<<endl;
else if(v->n==0) cout<<"Vectorul Este Gol. Niciun element de sters"<<endl;
else {
for(int i=0;i<v->n;i++){
v->vect[i]=v->vect[i+1];
}
v->n--;
cout<<"Stergere Executata Cu Succes";
}
return;
}
void stergere_sfarist(vector * v){

if(v==NULL) cout<<"Memorie Nealocata"<<endl;


else if(v->n==0) cout<<"Vectorul Este Gol. Niciun element de sters"<<endl;
else {
v->n--;
cout<<"Stergere Executata Cu Succes";
}
return;
}

void stergere_mijloc(vector * v){


cout<<"Introduceti pozitie:";
int poz;
cin>>poz;
if(v==NULL) cout<<"Memorie Nealocata"<<endl;
else if(v->n==0) cout<<"Vectorul Este Gol. Niciun element de sters"<<endl;
else if (poz>=v->n) cout<<"Pozitia excede numarul de elemente"<<endl;
else {
for(int i=poz;i<v->n;i++){
v->vect[i]=v->vect[i+1];
}
v->n--;
cout<<"Stergere Executata Cu Succes";
}
return;
}
int actualizare(vector* v, int place, int value)
{
if (v == NULL)
return -1;
v->vect[place] = value;

return 0;
}

void cautare(vector* v, int elem)


{

if (v == NULL){
cout<<"vectorul nu are elemente";
return;}

for (int i = 0; i < v->n; i++)


{
if (v->vect[i] == elem)
cout<<"elementul se afla la pozitia v["<<i<<"];";

}
return;

void distrugere(vector* v) {

if (v == NULL)
return;

else if (v->vect){
delete v->vect;

delete v;
cout<<"Distrugere efectuata cu succes";
return;}
}

int main(){
vector *v=NULL;
int aleg;
int val;//pt inserari etc
do {
cout<<"0.Iesire"<<endl;
cout<<"1.Initializare"<<endl;
cout<<"2.Intrare Elemente"<<endl;
cout<<"3.Afisare"<<endl;
cout<<"4.Insert Inceput"<<endl;
cout<<"5.Insert Interior"<<endl;
cout<<"6.Insert Sfarsit"<<endl;
cout<<"7.Stergere Inceput"<<endl;
cout<<"8.Stergere Interior"<<endl;
cout<<"9.Stergere Sfarsit"<<endl;
cout<<"10.Actualizare Element"<<endl;
cout<<"11.Cautare Element"<<endl;
cout<<"12.Distrugere"<<endl;
afisare(v);

cout<<endl<<"introduceti o optiune:";

cin>>aleg;
switch(aleg){
case 0: goto ret;
case 1:{
int dim;
cout<<"Dati nr maxim de elemente";
cin>>dim;
v=init(dim);
cout<<"Initializare Executata Cu Succes";
break;}
case 2:{

intrare(v);
break;
}
case 3:{

afisare(v);
break;
}
case 4:{

cout << "Valoare inserare= ";


cin >> val;
insert_inceput(v, val);
break;

}
case 5:{
cout << "Valoare inserare= "<<endl;
cin >> val;
insert_mijloc(v, val);

break;

}
case 6:{

cout << "Valoare inserare= ";


cin >> val;
insert_sfarsit(v, val);

break;

}
case 7:{
stergere_inceput(v);
break;
}
case 8:{
stergere_mijloc(v);
break;
}
case 9:{
stergere_sfarist(v);
break;}
case 10:{
int loc;
cout<<"introduceti pozitia dorita";
cin>>loc;
if(loc>v->n) cout<<"Pozitia excede numarul pozitiilor curente ale vectorului";
else {
cout<<"Introduceti valoarea:";
cin>>val;
int verif=actualizare(v , loc, val);
if(verif==-1) cout<<"Actualizarea nu a avut loc";
else cout<<"Actualizare executata cu succes";
}

break;}
case 11:{
cout<<"Introduceti valoarea cautata:";
cin>>val;
cautare(v,val);

break;
}
case 12:{
distrugere(v);
break;
}

default: {

cout<<"Optiune Gresita";
break;
}}

cout<<endl;
system("pause");

system("cls");
}while (aleg!=0);
ret:
return 0;
}

//Liste simplu inlanutite

#include <iostream>

using namespace std;

struct Nod {
int info;
struct Nod * succ;
};

Nod* init(const int info) {

Nod* nodNou = new Nod;

nodNou->info = info;

nodNou->succ = NULL;
return nodNou;
}

Nod* cautare(Nod* front, const int info_caut){


Nod* tmp=front;
while(tmp!=NULL){
if(tmp->info==info_caut){

return tmp;
}
else tmp=tmp->succ;

}
delete tmp;
return NULL;
}
Nod* inserareInceput(Nod* front, const int info)
{
if (front == NULL)
{
front = init(info);
}
else
{
Nod* NodNou = init(info);
NodNou->succ = front;
front = NodNou;
}
return front;
}
Nod* inserareSfarsit(Nod* front, const int infonou){
if(front==NULL){
Nod* nodnou=init(infonou);
nodnou->succ=NULL;
nodnou->info=infonou;
front=nodnou;

}
else{
Nod* tmp=front;
while(tmp->succ!=NULL){
tmp=tmp->succ;

}
Nod* ultim=tmp;
Nod* nodnou=init(infonou);
ultim->succ=nodnou;
nodnou->succ=NULL;
nodnou->info=infonou;
}

return front;
}

Nod* inserareMijloc(Nod* front,const int infonou, Nod* previ){


if(front==NULL){
Nod* nodnou=init(infonou);
nodnou->succ=NULL;
nodnou->info=infonou;
front=nodnou;
}
else if(front->succ==NULL) { inserareSfarsit(front,infonou);}
else{
Nod* nodnou;
nodnou=init(infonou);
nodnou->succ=previ->succ;
previ->succ=nodnou;
nodnou->info=infonou;

return front;
}
return front;
}

Nod* stergereInceput(Nod* front)


{
if (front==NULL) cout<<"Nu aveti noduri"<<endl;
else{
Nod* tmp=front;
front=front->succ;
delete tmp;}

return front;
}

Nod* stergereMijloc(Nod* front,Nod* previ){


if (front==NULL) cout<<"Nu aveti noduri"<<endl;
else if (previ==NULL) cout<<"nu exista nodul cautat"<<endl;
else{
Nod* tmp=previ->succ;
previ->succ=tmp->succ;
delete tmp;
}
return front;
}

Nod* stergereSfarsit(Nod* front){


if (front==NULL) cout<<"Nu aveti noduri"<<endl;
else{
Nod* tmp=front;
while(tmp->succ->succ!=NULL){
tmp=tmp->succ;
}
Nod* penultim=tmp;
Nod* salv=penultim->succ;
penultim->succ=NULL;
delete salv;

return front;
}
Nod* actualizare(Nod* front, const int element, int element_nou)
{
Nod* adr=cautare(front,element);
if(adr==NULL){
cout<<"Informatia nu exista";
}
else adr->info=element_nou;

return front;
}

void afisare(Nod* front){


if(front==NULL) {cout<<"nu exista noduri"; return;}
Nod* tmp= front;

while(tmp!=NULL){
cout<<tmp->info<<" ";
tmp=tmp->succ;
}
delete tmp;
}

Nod* distrugere(Nod* front){


if(front==NULL){return NULL;}
else if(front->succ==NULL) delete front;
else
while(front!=NULL) {
Nod* tmp=front;
front=front->succ;
delete tmp;}
return NULL;
}

void Sortare(Nod* front) {


if (front == NULL) {
cout << "Nu exista noduri de sortat" << endl;
} else if (front->succ == NULL) {
cout << front->info << endl;
} else {
Nod* i, * j;
int temp;
for (i = front; i != NULL; i = i->succ) {
for (j = i->succ; j != NULL; j = j->succ) {
if (i->info > j->info) {
temp = i->info;
i->info = j->info;
j->info = temp;
}
}
}
cout << "Sortare cu succes: ";
for (Nod* p = front; p != NULL; p = p->succ) {
cout << p->info << " ";
}
cout << endl;
}
}

int Minim(Nod* front)


{ if(front==NULL) return -1;
else if(front->succ==NULL) return front->info;
else{
int minim = front->info;
Nod* aux = front->succ;

while (aux != NULL)


{

if (minim > aux->info)


{
minim = aux->info;
}

aux = aux->succ;
}

return minim;}
}

int Maxim(Nod* front)


{ if(front==NULL) return -1;
else if(front->succ==NULL) return front->info;
else{
int maxim = front->info;
Nod* aux = front->succ;

while (aux != NULL )


{

if (maxim<aux ->info)
{
maxim = aux->info;
}

aux = aux->succ;
}

return maxim;
}
}
Nod* copiere_valm(Nod* front, int val,Nod* copie){
if(front==NULL){ cout<<"copie=NULL"; return NULL;}
else if(front->succ==NULL) copie->info=front->info;
else{
Nod* tmp=front;

while(tmp!=NULL){
if(tmp->info < val){
if(copie==NULL) copie=init(tmp->info);
else {
Nod* tmp2=init(tmp->info);
tmp2->succ=copie;
copie=tmp2;
}
}
tmp=tmp->succ;
}
delete tmp;
}
return copie;
}

Nod* copiere_valM(Nod* front, int val,Nod* copie){


if(front==NULL){ cout<<"copie=NULL"; return NULL;}
else if(front->succ==NULL) copie->info=front->info;
else{
Nod* tmp=front;

while(tmp!=NULL){
if(tmp->info > val){
if(copie==NULL) copie=init(tmp->info);
else {
Nod* tmp2=init(tmp->info);
tmp2->succ=copie;
copie=tmp2;
}
}
tmp=tmp->succ;
}
delete tmp;
}
return copie;
}

int main() {

Nod* front = NULL;


int meniu;

do{
cout<<"0. Iesire din program"<<endl; //
cout<<"1. Initializare"<<endl; //
cout<<"2. Inserare Inceput"<<endl; //
cout<<"3. Inserare Mijloc"<<endl; //
cout<<"4. Inserare Sfarsit"<<endl; //
cout<<"5. Stergere Inceput"<<endl;
cout<<"6. Stergere Mijloc"<<endl;
cout<<"7. Stergere Sfarsit"<<endl;
cout<<"8. Parcurgere (Afisare)"<<endl; //
cout<<"9. Actualizare"<<endl;
cout<<"10.Cautare"<<endl; //
cout<<"11. Distrugere"<<endl;//
cout<<"12.Sortare"<<endl;//
cout<<"13.Minim"<<endl;//
cout<<"14.Maxim"<<endl;//
cout<<"15.Copiere in functie de parametru maxim"<<endl;
cout<<"16.Copiere in functie de parametru minim"<<endl;
afisare(front);
cout<<endl<<"introduceti tasta dorita:";
cin>>meniu;

switch(meniu){
case 0://
{ goto ret;
break;
}
case 1: //
{ cout<<"introduceti informatia primului nod";
int nr;
cin>>nr;
front=init(nr);
cout<<"nod initializat cu succes";
break;
}
case 2: //
{
int nr;
cout << "nr = ";
cin >> nr;
front = inserareInceput(front, nr);
cout<<"nod inserat cu succes";
break;
}
case 3:
{ int nr;
cout<<"nr= ";
cin>>nr;
int pr;
red:cout<<"introduceti informatia nodului langa care doriti sa
plasati nodul";
cin>>pr;
Nod* previ=cautare(front,pr);
if(cautare(front,pr)==NULL) {cout<<"Elementul dat nu exista"<<endl;
goto red;}
front=inserareMijloc(front,nr,previ);
cout<<"nod inserat cu succes";
break;
}
case 4:
{
int nr;
cout<<"nr= ";
cin>>nr;
front = inserareSfarsit(front, nr);
cout<<"nod inserat cu succes";
break;
}
case 5:
{
front=stergereInceput (front);
cout<<"nod sters cu succes";
break;

}
case 6:{int nr;
red2: cout<<"introduceti informatia nodului inainte de cel pe care
doriti sa-l stergeti";
cin>>nr;
Nod* sterg=cautare(front,nr);
if(cautare(front,nr)==NULL) {cout<<"nr nu exista!"<<endl; goto
red2;}
else{
front=stergereMijloc(front,sterg);
cout<<"nod sters cu succes";}
break;}

case 7:
{
front=stergereSfarsit(front);
cout<<"nod sters cu succes";
break;
}
case 8:
{
afisare(front);
break;
}
case 9:{ //
int inf1,inf2;
cout<<"informatia pe care doriti sa o schimbati:";
cin>>inf1;
cout<<"informatia de schimbat:";
cin>>inf2;
front=actualizare(front,inf1,inf2);
break;
}
case 10: //
{
cout<<"introduceti informatia nodului cautat";
int nr;
cin>>nr;
cout<<"Nodul se afla la adresa: "<<cautare(front,nr);

break;
}
case 11:{
front=distrugere(front);
if(front==NULL) cout<<"Distrugere efectuata cu succes!";
break;

}
case 12:{

cout<<endl<<"In urma Sortarii:"<<endl;


Sortare(front);
break;
}
case 13:{

if(Minim(front)==-1) cout<<"Minimul nu exista";


else cout<<"Valoarea minima este: "<<Minim(front);

break;
}
case 14:{
if(Maxim(front)==-1) cout<<"Maximul nu exista";
else cout<<"Valoarea maxima este: "<<Maxim(front);
break;}

case 15:{
int val;
cout<<"Introduceti valoarea maxima";
cin>>val;
//if(Maxim(front)val) {cout<<"copie=NULL"; goto no;}
if(Minim(front)>val) {cout<<"copie=NULL"; goto no;}
else{

Nod* copie=NULL;
copie=copiere_valm(front,val,copie);
cout<<endl<<"Copie:";
afisare(copie);}

no:
break;
}

case 16:{
int val;
cout<<"Introduceti valoarea minima";
cin>>val;

if(Maxim(front)<val) {cout<<"copie=NULL"; goto no2;}


else{

Nod* copie=NULL;
copie=copiere_valM(front,val,copie);
cout<<endl<<"Copie:";
afisare(copie);}

no2:
break;}
default:
{
cout<<"Varianta gresita"<<endl;
}
}

cout<<endl;
system ("pause");
system("cls");
}
while(meniu!=0);

ret:
return 0;

//LDI

#include <iostream>

//int index;

using namespace std;


struct Nod {
int info;
struct Nod * succ; //succesor
struct Nod * pred; //predecesor
};

// Definire Structure Pentru Lista. Definim o alta structura pentru ca lista dublu
inlantuita are 2 noduri, front si end.

struct LDI{
struct Nod* front;
struct Nod* end;
};
//in pseudocod front=lista->front si la end lfl;
LDI* initializareLista()
{
LDI* lista = new LDI;

lista->front = NULL;

lista->end = NULL;
//index=0;
return lista;
}

Nod* init(const int info) {

Nod* nodNou = new Nod;

// Setare informatie in NOD nou.


nodNou->info = info;

// Setare urmatorul si precedentul nod (NULL, la creare nu avem urmatorul


NOD) deci il setam pe NULL.
nodNou->succ = NULL;
nodNou->pred = NULL;

// Functia returneaza noul NOD.


return nodNou;
}

LDI* inserareInceput(LDI* lista, const int info)


{
Nod* nodNou = init(info);

if (lista->front == NULL)
{
lista->front = lista->end = nodNou;
}
else
{
nodNou->succ = lista->front;
lista->front->pred = nodNou;
lista->front = nodNou;
cout<<"nod inserat cu succes";
//index++; // pt alt exercitiu , ignora otherwise;

}
return lista;

LDI* inserareSfarsit(LDI* lista, int infonou){


Nod* nou=init(infonou);
if(lista->front==NULL){
lista->front=nou;
lista->end=nou;
}
else{
nou->pred=lista->end;
lista->end->succ=nou;
nou->info=infonou;
nou->succ=NULL;
lista->end=nou;
cout<<"nod inserat cu succes";
//index++; // pt alt exercitiu , ignora otherwise;
}

return lista;

LDI* inserareMijloc(LDI* lista, int infonou,Nod* previ ){


if(lista->front==NULL){
Nod* nou=init(infonou);
lista->front=nou;
lista->end=nou;

}
else if(lista->front==lista->end&&lista->front!=NULL){

inserareSfarsit(lista, infonou);
}
else{
Nod* nou=init(infonou);
nou->pred=previ;
previ->succ->pred=nou;
nou->succ=previ->succ;
previ->succ=nou;
nou->info=infonou;
cout<<"nod inserat cu succes";
//index++; // pt alt exercitiu , ignora otherwise;

return lista;
}

void afisare_inceput(LDI* lista){


if(lista==NULL) {cout<<"LDI nu exista"; return;}
else if(lista->front==NULL&&lista->end==NULL) {cout<<"Nu exista info"; return;}
else {
Nod* tmp=lista->front;
while(tmp!=NULL){
cout<<tmp->info<<" ";
tmp=tmp->succ;

}
delete tmp;
return;
}}
void afisare_sfarsit(LDI* lista){

if(lista==NULL) {cout<<"LDI nu exista"; return;}


else if(lista->front==NULL&&lista->end==NULL) {cout<<"Nu exista info"; return;}

else {
Nod* tmp=lista->end;
while(tmp!=NULL){
cout<<tmp->info<<" ";
tmp=tmp->pred;

}
delete tmp;
return;
}

Nod* cautare_inceput(LDI* lista, int cautat){


Nod* tmp=lista->front;
while ( tmp!=NULL){
if(tmp->info==cautat) return tmp;
else tmp=tmp->succ;

return NULL;
}

Nod* cautare_sfarsit(LDI* lista, int cautat){


Nod* tmp=lista->end;
while ( tmp!=NULL){
if(tmp->info==cautat) return tmp;
else tmp=tmp->pred;

}
return NULL;
}

LDI* stergereInceput(LDI* lista){


if(lista->front==NULL) cout<<"Eroare-Lista inexistenta";
else if(lista->front==NULL&&lista->end==NULL) {cout<<"Nu exista info"; }

else {
Nod* salv=lista->front;
lista->front->pred=NULL;
lista->front=lista->front->succ;
delete salv;
cout<<"Stergere efectuata cu succes";
//index--; // pt alt exercitiu , ignora otherwise;

}
return lista;

LDI * stergereSfarsit(LDI* lista){

if(lista==NULL) cout<<"Eroare-Lista inexistenta";


else if(lista->front==NULL&&lista->end==NULL) {cout<<"Nu exista info"; }
else{

Nod* salv=lista->end;
lista->end=lista->end->pred;
lista->end->succ=NULL;
delete salv;
cout<<"Stergere efectuata cu succes";
// index--; // pt alt exercitiu , ignora otherwise;

return lista;
}

LDI* stergereMijloc(LDI* lista, Nod* previ ){


if(lista==NULL) cout<<"Eroare-Lista inexistenta";
//else if(lista->front==NULL&&lista->end==NULL) {cout<<"Nu exista info"; }
else if(lista->front==lista->end) stergereInceput(lista);
else {
Nod* salv=previ->succ;
previ->succ=previ->succ->succ;
salv->succ->pred=previ;
delete salv;
//index--; // pt alt exercitiu , ignora otherwise;

return lista;

LDI* actualizare(LDI* lista, int schimb, int infonou){


Nod* adr=cautare_inceput(lista,schimb);
if(adr==NULL) cout<<"Eroare-Informatia nu exista";
else adr->info=infonou;
return lista;
}

LDI* distrugere(LDI* lista){


if(lista==NULL){return NULL;}
else if(lista->front->succ==NULL) delete lista->front;
else
while(lista->front!=NULL) {
Nod* tmp=lista->front;
lista->front=lista->front->succ;
delete tmp;}
return NULL;
}

int Minim_inceput(LDI* lista)


{ if(lista==NULL) return -1;
else if(lista->front->succ==NULL) return lista->front->info;
else{
int minim = lista->front->info;
Nod* aux = lista->front->succ;

while (aux != NULL)


{

if (minim > aux->info)


{
minim = aux->info;
}

aux = aux->succ;
}

return minim;}
}

int Maxim_inceput(LDI* lista)


{ if(lista==NULL) return -1;
else if(lista->front->succ==NULL) return lista->front->info;
else{
int maxim = lista->front->info;
Nod* aux = lista->front->succ;

while (aux != NULL )


{

if (maxim<aux ->info)
{
maxim = aux->info;
}

aux = aux->succ;
}

return maxim;
}
}

int Minim_sfarsit(LDI* lista)


{ if(lista==NULL) return -1;
else if(lista->end->pred==NULL) return lista->end->info;
else{
int minim = lista->end->info;
Nod* aux = lista->end->pred;

while (aux != NULL)


{
if (minim > aux->info)
{
minim = aux->info;
}

aux = aux->pred;
}

return minim;}
}

int Maxim_sfarsit(LDI* lista)


{ if(lista==NULL) return -1;
else if(lista->end->pred==NULL) return lista->end->info;
else{
int maxim = lista->end->info;
Nod* aux = lista->end->pred;

while (aux != NULL )


{

if (maxim<aux ->info)
{
maxim = aux->info;
}

aux = aux->pred;
}

return maxim;
}
}

void Sortare_Crescatoare(LDI* lista) {


if (lista == NULL) {
cout << "Nu exista noduri de sortat" << endl;
} else if (lista->front->succ == NULL) {
cout << lista->front->info << endl;
} else {
Nod* i, * j;
int temp;
for (i = lista->front; i != NULL; i = i->succ) {
for (j = i->succ; j != NULL; j = j->succ) {
if (i->info > j->info) {
temp = i->info;
i->info = j->info;
j->info = temp;
}
}
}
cout << "Sortare cu succes: ";
for (Nod* p = lista->front; p != NULL; p = p->succ) {
cout << p->info << " ";
}
cout << endl;
}
}

void Sortare_Descrescatoare(LDI* lista){

if (lista == NULL) {
cout << "Nu exista noduri de sortat" << endl;
} else if (lista->front->succ == NULL) {
cout << lista->front->info << endl;
} else {
Nod* i, * j;
int temp;
for (i = lista->front; i != NULL; i = i->succ) {
for (j = i->succ; j != NULL; j = j->succ) {
if (i->info < j->info) {
temp = i->info;
i->info = j->info;
j->info = temp;
}
}
}
cout << "Sortare cu succes: ";
for (Nod* p = lista->front; p != NULL; p = p->succ) {
cout << p->info << " ";
}
cout << endl;
}

int NrElemente (LDI* lista){


if(lista==NULL) return 0;
else if (lista->front==NULL&&lista->end==NULL) return 0;
else if(lista->front->succ==NULL) return 1;
else {
int nrel;
for(Nod* tmp=lista->front;tmp!=NULL;tmp=tmp->succ){
nrel++;

}
return nrel;

LDI* swaplist( LDI* lista, int val1 , int val2){


Nod* unu= cautare_inceput(lista,val1);
Nod* doi= cautare_inceput(lista,val2);
if(lista==NULL) return NULL;
else {

}
}

int citire_index(LDI* lista, int cautat){


int index=0;
Nod* tmp=lista->front;
while ( tmp!=NULL){
index++;
if(index==cautat) return tmp->info;
tmp=tmp->succ;

return NULL;
}

int main() {

LDI* lista=NULL;

int meniu,val;
cout<<"Introduceti numarul maxim de elemente al listei";
int maxi;
cin>>maxi;

do{
cout<<"0. Iesire din program"<<endl;
cout<<"1. Initializare"<<endl;
cout<<"2.Traversare de la inceput"<<endl;
cout<<"3.Traversare de la sfarsit"<<endl;
cout<<"4.Inserare inceput"<<endl;
cout<<"5.Inserare sfarsit"<<endl;
cout<<"6.Inserare mijloc"<<endl;
cout<<"7.Cautare Inceput"<<endl;
cout<<"8.Cautare Sfarsit"<<endl;
cout<<"9.Stergere inceput"<<endl;
cout<<"10.Stergere sfarsit"<<endl;
cout<<"11.Stergere mijloc"<<endl;
cout<<"12.Actualizare"<<endl;
cout<<"13.Distrugere"<<endl;
cout<<"14.Minim de la inceput"<<endl;
cout<<"15.Maxim de la inceput"<<endl;
cout<<"16.Minim de la sfarsit"<<endl;
cout<<"17.Maxim de la sfarsit"<<endl;
cout<<"18.Sortare Crescatoare"<<endl;
cout<<"19.Sortare Descrescatoare"<<endl;
cout<<"20.Numar Elemente"<<endl;
cout<<"21.Citire element dupa index"<<endl;
cout<<"22.Swap"<<endl;

afisare_inceput(lista);
int nr=NrElemente(lista);
cout<<endl<<"Nr elem="<<nr<<endl;
if(maxi<nr) {cout<<"Numar maxim de elemente atins!"; goto ret;}

cout<<endl<<"introduceti tasta dorita:";


cin>>meniu;

switch(meniu){
case 0:
{ goto ret;
break;
}
case 1:
{
lista= initializareLista();
break;
}
case 2:
{ afisare_inceput(lista);
break;
}
case 4:
{ cout<<"Introduceti valoare pe care doriti sa o inserati la
inceput:";
cin>>val;
lista=inserareInceput(lista,val);

break;
}
case 3:
{ afisare_sfarsit(lista);

break;

}
case 5:
{ cout<<"Introduceti valoarea pe care doriti sa o inserati la sfarsit";
cin>>val;
lista=inserareSfarsit(lista,val);

break;

}
case 6:{
int nr;
cout<<"Info= ";
cin>>nr;
int pr;
red:cout<<"introduceti informatia nodului langa care doriti sa
plasati nodul";
cin>>pr;
Nod* previ=cautare_inceput(lista,pr);
if(cautare_inceput(lista,pr)==NULL) {cout<<"Elementul dat nu
exista"<<endl; goto red;}
lista=inserareMijloc(lista,nr,previ);
break;

break;}

case 7:{
cout<<"Introduceti valoarea pe care o cautati";
cin>>val;
Nod* adr=cautare_inceput(lista, val);
if(adr==NULL) cout<<"eroare";
else cout<<adr;

break;
}
case 8:{
cout<<"Introduceti valoarea pe care o cautati";
cin>>val;
Nod* adr=cautare_sfarsit(lista, val);
if(adr==NULL) cout<<"eroare";
else cout<<adr;

break;
}
case 9:{
lista=stergereInceput(lista);
break;
case 10:{
lista=stergereSfarsit(lista);
break;

}
case 11:{

int nr;
red2: cout<<"introduceti informatia nodului inainte de cel pe care
doriti sa-l stergeti";
cin>>nr;
if(cautare_inceput(lista,nr)==NULL) {cout<<"nr nu exista!"<<endl;
goto red2;}
else{
Nod* sterg=cautare_inceput(lista,nr);
lista=stergereMijloc(lista,sterg);
cout<<"nod sters cu succes";}
break;}

}
case 12:{
int schimb;
cout<<"Introduceti valoarea pe care doriti sa o modificati";
cin>>schimb;
cout<<"Introduceti valoarea noua:";
cin>>val;
lista=actualizare(lista,schimb,val);
cout<<"Actualizare efectuata cu succes!";
break;

}
case 13:{
lista=distrugere(lista);
if(lista==NULL) cout<<"Distrugere efectuata cu succes!";
break;

break;
}
case 14:{

if(Minim_inceput(lista)==-1) cout<<"Minimul nu exista";


else cout<<"Valoarea minima este: "<<Minim_inceput(lista);

break;}
case 15:{

if(Maxim_inceput(lista)==-1) cout<<"Maximul nu exista";


else cout<<"Valoarea maxima este:"<<Maxim_inceput(lista);
break;
}
case 16:{

if(Minim_sfarsit(lista)==-1) cout<<"Minimul nu exista";


else cout<<"Valoarea minima este: "<<Minim_sfarsit(lista);

break;}

case 17:{

if(Maxim_sfarsit(lista)==-1) cout<<"Maximul nu exista";


else cout<<"Valoarea maxima este:"<<Maxim_sfarsit(lista);
break;
}
case 18:{

cout<<endl<<"In urma Sortarii:"<<endl;


Sortare_Crescatoare(lista);
break;}
case 19:{

cout<<endl<<"In urma Sortarii:"<<endl;


Sortare_Descrescatoare(lista);
break;}
case 20:{

cout<<"Nr. elemente:="<<NrElemente(lista)<<endl;
break;
}
case 21:{
cout<<"Introduceti indexul";
cin>>val;
cout<<citire_index(lista, val);

break;}
case 22:{
int val1 ,val2;
cout<<"Introduceti informatia primul elem:";
cin>>val1;
cout<<"Introduceti informatia celui de al doilea element";
cin>>val2;
lista=swaplist(lista,val1,val2);

break;

default:
{
cout<<"Varianta gresita"<<endl;
}
}

cout<<endl;
system ("pause");
system("cls");
}
while(meniu!=0);

ret:
return 0;

You might also like