Documente Academic
Documente Profesional
Documente Cultură
while(!EmptyS(S))
//daca mai sunt operatori in stiva
sir2[k++]=Pop(S);
for(int i=0;i<k;++i)
putchar(sir2[i]); //afisez sirul rezultat
Teme
S se scrie un program care folosete o
stiv pentru a verifica nchiderea corect a
parantezelor ntr-o expresie. Expresia are
maxim 80 de caractere i conine
patrutipuri de paranteze: { }, ( ), < >, [ ].
S se inverseze ordinea elementelor ntrun vector utiliznd o stiv.
S se scrie un program care folosete o
stiv pentru a verifica dac un ir de
caractere este palindrom.
8
12
atom front(queue Q)
{
if(isempty(Q) = =1)
{
Cout<<"\n Coada vida";
return 0;
}
else
return Q.vect[Q.head];
}
13
Structuri generice
Cerin fundamental a programelor dezvoltate n
mod profesionist caracterul de generalitate
O funcie generic definete o secven de aciuni ce
pot fi aplicate unor tipuri de date diferite;
Tipurile de date asupra crora acioneaz funcia
sunt transmise ca parametri;
n limbajul C, implementarea unei funcii generice se
se realizeaz astfel: n lista de argumente, funcia
primete un pointer la o valoare de orice tip (void *) i
o funcie ce prelucreaz valori de acel tip;
Remember PC
Pointeri la funcii
Pointeri la void
14
Stive generice
Informaia din structura unui nod(element)
poate fi de orice tip: int, float, char, string
Cum se modific structura i funciile?
Cum se apeleaz funciile?
Stack
Pointer
void *
tip data
void *
tip data
void *
tip data
15
Stive generice
STIVA InitS(void);
int EmptyS(STIVA);
void *Pop(STIVA);
void Push(void*, STIVA);
void *Top(STIVA);
t=s;
aux=t->info;
s=s->urm;
delete t;
return(aux);
}
16
Stive generice
void Push(void *x, STIVA &s)
{
STIVA t;
if((t=new nod)==NULL)
{ printf("Push - eroare alocare"); return 0;}
t->info=x;
t->urm=s;
s=t;
}
17
18
Liste generalizate
O list generalizat conine elemente ce pot fi de tip atom sau lista.
Pentru a preciza tipul unui element, se memoreaz n fiecare nod tipul
acestuia (Atom sau Lista).
Cmpul data poate conine un Atom sau o Lista.
TAG
DATA
LINK
A e
A b
A c
A f
A d
0
19
Liste generalizate
Creare lista generalizat:
GLista L;
L=creareGLista();
//funcie dat
void Afis(GLista p)
{ printf("(");
while(p)
{
if(p->tag==ATOM)
if(p->link)
printf("%c,",p->data.A);
else printf("%c",p->data.A);
else {Afis(p->data.L);
if(p->link) printf(",");
}
p=p->link;
}
printf(")");
}
//pun prima (
//cit timp p<>0
//am atom
//si nu e ultunul din lista
//pun atomul si ,
//daca e ultimul NU pun ,
//daca e sublista apelez Afis
//si pun , daca nu nu e ultima sublist
//trec la urmatorul element
// pun ) finala
21
p=p->link;
}
return (a.b?a:b);
}
22
23
24