Jol csináltam meg a láncolt listás info házim? (c++)
6.2Adott egy egyszeresen láncolt dinamikus lista, amelynek legalább két eleme van. A lista minden elemének urm mezőjében a következő listaelem címét tároljuk, vagy NULL-t, ha nincs következő elem.
while (...)
p=p->urm;
delete p->urm; | free (p->urm);
p->urm=NULL;
Tudva azt, hogy a lista első elemének címét a p változóban tároljuk, a következő kifejezések közül, melyiket kell beírnunk a kipontozott részre ahhoz, hogy a programrész törölje a lista utolsó elemét?
a. p->urm->urm!=NULL b. p->urm!=NULL c. p!=NULL d. p->urm->urm==NULL
MEGOLDÁS: d
7.2 Egy legalább kételemű egyszeresen láncolt dinamikus lista elemeinek info mezőjében egy legtöbb 4 számjegyű természetes számot tárolunk, az urm mezőjében pedig, a lista következő elemének címét, vagy NULL-t ha nincs következő elem.
while (p->urm!=NULL)
{
if (p->urm->info<p->info)
p->urm->info=p->info;
p=p->urm;
}
cout<<p->info;| printf(‘‘%d‘‘,p->info);
Ha a p változó a lista első elemének címét tartalmazza, akkor a mellékelt programrész
végrehajtása után kiírt érték:
a. a lista legkisebb elemének értéke.
b. a lista legnagyobb elemének értéke.
c. a lista utolsó előtti elemének értéke.
d. a lista első elemének értéke
MEGOLDÁS: b
8.4 Egy legkevesebb 4 elemet tartalmazó egyszeresen láncolt listában, minden elem urm mezőjében a következő listaelem címét tároljuk, vagy NULL-t, ha nincs következő elem, az info mezőjében pedig egy egész értéket. Tudva azt, hogy a p változóban a lista első elemének címét tároljuk, írjátok be a kipontozott részekre a megfelelő kifejezéseket úgy, hogy a programrész végrehajtása után, az s változóban a lista elemeinek összege legyen.
s= ……;
while ( …… )
{
p=p->urm;
s=s+p->info;
}
cout<<s; | printf(‘‘%d’’,s)
MEGOLDÁS: s=0; és while(p->urm!=NULL)
9.2 Egy egyszeresen láncolt listában az elemek info mezőjében egy egész számot tárolunk, az urm mezőjében a következő listaelem címét, vagy NULL-t, ha nincs következő elem. A p változó a lista első elemének címét tartalmazza. A lista a következő elemeket tartalmazza, ebben a sorrendben: 2, 3, 4, 5, 6, 7, 8. Mi jelenik meg a képernyőn a programrész végrehajtása után?
while(p!=NULL && p->urm!=NULL)
{
cout<<p->info; | printf(‘‘%d’’,p->info);
p->urm=p->urm->urm;
p=p->urm;
}
a. 2 4 6 b. 2 4 6 8 c. 2 4 8 d. 2 5 8 megoldás: d





megcsináltam már jol azóta amíg (p utáni elemre mutató pointer nem a semmibe mutat)
while(p->urm != null)
Tehát a b, a helyes





Ebben az esetben amikor kilép a while-ból, akkor a p->urm null lesz. erre hívsz deletet. Ez nem szép, és utána be is állítod nullra újra, aminek így semmi értelme nincs.
(És nem fogja törölni az utolsó elemet, mert az a p-ben van)
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!