All
All
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <iostream>
struct vector{
int * vect;
int dim; //dim totala
int n; //nr elem
};
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{
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;
v->vect[poz]=val;
v->n++;
cout<<"inserare executata cu succes";
}
return;
}
return 0;
}
if (v == NULL){
cout<<"vectorul nu are elemente";
return;}
}
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:{
}
case 5:{
cout << "Valoare inserare= "<<endl;
cin >> val;
insert_mijloc(v, val);
break;
}
case 6:{
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;
}
#include <iostream>
struct Nod {
int info;
struct Nod * succ;
};
nodNou->info = info;
nodNou->succ = NULL;
return nodNou;
}
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;
}
return front;
}
return front;
}
return front;
}
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;
}
while(tmp!=NULL){
cout<<tmp->info<<" ";
tmp=tmp->succ;
}
delete tmp;
}
aux = aux->succ;
}
return minim;}
}
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;
}
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() {
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:{
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;
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;
// 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;
}
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;
return lista;
}
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;
}
}
delete tmp;
return;
}}
void afisare_sfarsit(LDI* lista){
else {
Nod* tmp=lista->end;
while(tmp!=NULL){
cout<<tmp->info<<" ";
tmp=tmp->pred;
}
delete tmp;
return;
}
return NULL;
}
}
return NULL;
}
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;
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;
}
return lista;
aux = aux->succ;
}
return minim;}
}
if (maxim<aux ->info)
{
maxim = aux->info;
}
aux = aux->succ;
}
return maxim;
}
}
aux = aux->pred;
}
return minim;}
}
if (maxim<aux ->info)
{
maxim = aux->info;
}
aux = aux->pred;
}
return maxim;
}
}
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;
}
}
return nrel;
}
}
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;}
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:{
break;}
case 15:{
break;}
case 17:{
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;