Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lista Si Coada Program
Lista Si Coada Program
struct Nod
{
int val;
Nod *adr;
};
Nod*prim=NULL;
void StergereElem(Nod*&prim,int vsters)
{
if (prim==NULL)
return;
if (vsters==prim->val)
//stergem primul element
{
Nod*s=prim;
prim=prim->adr;
delete s;
}
else
//stergem elementul intermediar
{
Nod*t-prim;
while(t->adr!=NULL && t->adr->val!=vsters)
{t=t->adr;
if (t->-adr==NULL)
cout<<Elementul nu exista.;
else //elementul exista; t-elementul anterior celui sters
{
Nod*s=t->adr;
t->adr=s=>adr;
delete s;
}
}
}
}
void StergereLista(Nod*&prim)
{
while(prim!=NULL)
{
Nod*s=prim;
prim=prim->adr;
delete s;
}
prim=NULL;
}
Tipuri particulare de stive si cozi
Stiva este o lista liniara in care intrarile si iesirile se fac la acelasi capat, la primul element.
(Gen last in-first out)
Acestea sunt ca listele liniare simplu inlantuite.
Adaugare la inceput
Stergere la inceput
Verificare stiva vida
Parcurgere stiva
Pentru verificare
int CoadaGoala (Nod*&prim)
{
return prim==NULL;
}
void Push (Nod *&prim, int valnou)
{
Nod*nou=new Nod;
nou->val=valnou;
nou->adr=NULL;
if (prim==NULL)
prim=nou;
else
{
Nod*iterator=prim;
while (iterator->adr!=NULL)
iterator=iterator->adr;
iterator->adr=nou;
}
}
Listele dublu inlantuite au de regula aceleasi operatii precum listele normale si stivele.
O astfel de lista va contine adresa elementului anterior cat si a urmatorului.
struct Nod
{int val;
Nod*ant, *urm;
}
O astfel de lista va fi gestionata prin backpointeri. aka un pointer care sa contina adresa
ultimului element, si unul care sa continta adresa urmatorului element.
Nod*prim=NULL, *ultim=NULL;
Problema: ordinea descrescatoare a notelor si ordinea alfabetica a numelui.