//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<<"[Link]"<<endl;
cout<<"[Link]"<<endl;
cout<<"[Link] Elemente"<<endl;
cout<<"[Link]"<<endl;
cout<<"[Link] Inceput"<<endl;
cout<<"[Link] Interior"<<endl;
cout<<"[Link] Sfarsit"<<endl;
cout<<"[Link] Inceput"<<endl;
cout<<"[Link] Interior"<<endl;
cout<<"[Link] Sfarsit"<<endl;
cout<<"[Link] Element"<<endl;
cout<<"[Link] Element"<<endl;
cout<<"[Link]"<<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<<"[Link]"<<endl; //
cout<<"11. Distrugere"<<endl;//
cout<<"[Link]"<<endl;//
cout<<"[Link]"<<endl;//
cout<<"[Link]"<<endl;//
cout<<"[Link] in functie de parametru maxim"<<endl;
cout<<"[Link] 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<<"[Link] de la inceput"<<endl;
cout<<"[Link] de la sfarsit"<<endl;
cout<<"[Link] inceput"<<endl;
cout<<"[Link] sfarsit"<<endl;
cout<<"[Link] mijloc"<<endl;
cout<<"[Link] Inceput"<<endl;
cout<<"[Link] Sfarsit"<<endl;
cout<<"[Link] inceput"<<endl;
cout<<"[Link] sfarsit"<<endl;
cout<<"[Link] mijloc"<<endl;
cout<<"[Link]"<<endl;
cout<<"[Link]"<<endl;
cout<<"[Link] de la inceput"<<endl;
cout<<"[Link] de la inceput"<<endl;
cout<<"[Link] de la sfarsit"<<endl;
cout<<"[Link] de la sfarsit"<<endl;
cout<<"[Link] Crescatoare"<<endl;
cout<<"[Link] Descrescatoare"<<endl;
cout<<"[Link] Elemente"<<endl;
cout<<"[Link] element dupa index"<<endl;
cout<<"[Link]"<<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;