Kezdőoldal » Számítástechnika » Programozás » Jol csináltam meg a láncolt...

Jol csináltam meg a láncolt listás info házim? (c++)

Figyelt kérdés

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


2013. okt. 3. 18:49
 1/4 anonim ***** válasza:
Szerintem az első kapásból rossz. Pl. egy hosszabb lista (legyen 10 elemű) esetén a whiel azonnal kilép, mivel a feltétel hamis lesz, és beállítja az első elem mutatóját null-ra. Törli a második elemet. (Az utána levő elemeket nem törli, de nem lesz rá mutató, tehát még leekelni is fog)
2013. okt. 3. 21:00
Hasznos számodra ez a válasz?
 2/4 A kérdező kommentje:

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

2013. okt. 3. 21:02
 3/4 anonim ***** válasza:

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)

2013. okt. 3. 21:06
Hasznos számodra ez a válasz?
 4/4 A kérdező kommentje:
majd holnap ugyis elmagyaráza a tanár vagy nem :(
2013. okt. 3. 21:14

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!