1)Într-o listă liniară simplu înlănţuită, alocată dinamic, fiecare element memorează în câmpul
nr un număr întreg, iar în câmpul urm adresa elementului următor din listă sau valoarea
NULL dacă nu există un element următor. Lista conţine exact trei elemente ale căror
adrese sunt memorate în variabilele p, q şi r. Ştiind că p->nr==1, q->nr==2, r->nr==3,
p->urm!=NULL şi r->urm==q, care este ordinea numerelor din listă?
a. 1 3 2 b. 1 2 3 c. 2 1 3 d. 3 2 1
Raspuns: a.
Argumentare: p NU este ultimul
q urmeaza dupa r
=> p-primul
r-al doilea
q-al treilea => a.132
2)Fiecare element al unei liste circulare, simplu înlănţuită, nevidă, alocată dinamic,
memorează în câmpul val o valoare întreagă, iar în câmpul adr adresa elementului
următor din listă. Ştiind că variabila p reţine adresa unui element oarecare din listă, iar
variabila q este de acelaşi tip cu p, precizaţi care dintre următoarele secvenţe de program
afişează, în urma executării, toate valorile memorate de elementele listei?
a. q=p;
while(q!=p) {cout <<>val;
q=q->adr;}
b. q=p;
while(q->adr!=p){cout <<>val;
q=q->adr;}
c. q=p;
do{ cout <<>val;
q=q->adr;
}while(q!=p);
d. q=p->adr;
while(q!=p) {cout <<>val;
q=q->adr;}
Raspuns: b.
Argumentare: variantele a. si c. sunt gresite deoarece initializand p cu q impreuna cu conditia de afisare(p!=q) programul nu se va executa din start.
iar varianta d. este gresita deoarece astfel afisarea va incepe de la al doilea element. ramane varianta b. care este corecta.
3)O listă liniară simplu înlănţuită, alocată dinamic, reţine în
câmpul nr al fiecărui element câte un număr natural, iar în
câmpul urm, adresa elementului următor din listă sau NULL
dacă nu există un element următor. Lista memorează, în
acestă ordine, doar numerele: elementele 1, 2, 3, 4, 5.
Ştiind că variabila prim memorează adresa primului element al
listei şi că p este o variabilă de acelaşi tip cu prim, care sunt, în
ordine, numerele memorate în elementele listei după executarea
secvenţei de program alăturate?
p=prim;
x=p->nr;
while(p->urm!=NULL)
{p->nr = p->urm->nr;
p=p->urm;
}
p->nr=x;
Se va afisa: 2 3 4 5 1
4)Într-o listă simplu înlănţuită, alocată dinamic, cu cel puţin patru elemente, fiecare element
reţine în câmpul urm adresa elementului următor din listă sau NULL dacă nu există un
element următor. Dacă variabilele p, q şi r memorează adresele a trei noduri din listă astfel
încât p -> urm = = q -> urm -> urm şi r-> urm = =q atunci ordinea logică a nodurilor în
listă (noduri identificate prin adrese) este:
a. r, q, p
b. p, r, q
c. p, q, r
d. q, r, p
Raspuns:a. r,q,p
Argumentare: r->urm=q adica dupa r urmeaza q
p->urm=q->urm->urm sau p=q->urm adica dupa q urmeaza p
=> daca dupa r urmeaza q si dupa q urmeaza p atunci ordinea este :r q p
5)Într-o listă circulară, simplu înlănţuită, nevidă, alocată dinamic, cu exact 9 elemente,
fiecare element memorează în câmpul val o valoare întreagă, iar în câmpul adr adresa
elementului următor.
Ştiind că în listă sunt memorate, în ordine,
numerele de la 1 la 9, şi variabila p reţine
adresa elementului cu valoarea 4, iar
variabila q este de acelaşi tip cu p, precizaţi
ce se va afişa în urma executării secvenţei
de program alăturate?
{q=p;
cout <<> adr -> val <<> adr!=p)
{q=q->adr;
cout <<> adr -> val;}
}
Se va afisa: 5
6 7 8 9