Kezdőoldal » Számítástechnika » Programozás » Hogyan írjak olyan függvényt...

Hogyan írjak olyan függvényt ami a láncolt lista utolsó előtti elemének címét vissza adja?

Figyelt kérdés

Tehát nem az utolsót aminek itsNext adattagja egy 0 ra mutat.Hanem az utolsó előttiét.

Mert amikor a lista végére akarok csatolni még egy objektumot akkor ugye meg kell szerezni az utolsó elemre mutató pointert.

Ezt adná vissza a függvény.


Meg olyat is akarok majd írni,hogy át adom a függvénynek bemenő paraméterként egy char vagy string típust,hogy annak az objektumnak a címét adja vissza aminek az itsName adattagjába a bemenő paraméterrel megegyező szöveg van.

Így a közepére is könnyebben be fogok tudni tenni a karakterláncba.


2012. júl. 9. 20:20
 1/9 A kérdező kommentje:

Próbálkozom közben.

Kérlek ne írjátok le a kódot azt én akarom csak segítsetek.

2012. júl. 9. 20:24
 2/9 A kérdező kommentje:
Rájönni,hogy kell.
2012. júl. 9. 20:24
 3/9 A kérdező kommentje:
2 szeres láncolt lista esetén látom magam előtt a megoldást de egyszeresnél már nem.
2012. júl. 9. 20:26
 4/9 anonim ***** válasza:
100%

Nem teljesen értem a gondodat, de ha az utolsó előtti elemet akarod visszaadni, akkor if ( act->itsNext->itsNext == NULL ), X->Y->NULL -ből X-et adja vissza.


Ha pedig egy cím kell, akkor egy Node& visszatérési értékkel rendelkező fgv-t írsz, ami addig tologatja az act-ot. ( Az act-ot beállítod a fejelemre, és itsNext-elgetsz, addig amíg act->itsName != akármi ), majd ezt return-ölöd.

2012. júl. 9. 20:26
Hasznos számodra ez a válasz?
 5/9 A kérdező kommentje:

Előző a te válaszodból semmit sem értek.

Itt a kód az utolsó helyre akarom be tenni az új elemet.

//main.cpp

# include <iostream>

# include <cstring>

typedef unsigned short ushort;

typedef unsigned int uint;

using namespace std;


class Cat {

public:

Cat(string name);

~Cat();


string Get_Name()const {return *itsName;}

void Set_Next(Cat *const elem) {itsNext = elem;}

Cat* Get_Next()const {return itsNext;}

protected:

private:

string *itsName;

Cat *itsNext;

};


Cat::Cat(string name):

itsName(new string(name))

{}


Cat::~Cat() {

delete itsName;

}



Cat* Get_NameTheLastElement(Cat *const elem);


int main() {

Cat *lista_fej = 0;

Cat *uj = new Cat("Bolyhos");

lista_fej = uj;

uj->Set_Next(0); //lista_fej---->Bolyhos,0


uj = new Cat("Tappancs");

uj->Set_Next(lista_fej);

lista_fej = uj; //lista_fej----->Tappancs,*---->Bolyhos,0


uj = new Cat("Mancsos");

uj->Set_Next(lista_fej);

lista_fej = uj; //lista_fej----->Mancsos,*------>Tappancs,*----->Bolyhos,0


uj = new Cat("Szormi");

uj->Set_Next(0);

Cat *regi = Get_NameTheLastElement(lista_fej);

regi = uj;



for(Cat *elem = lista_fej; elem != 0; elem = elem->Get_Next())

cout <<"Macsek a listaban: "<< elem->Get_Name() << endl;



return 0;

}


Cat* Get_NameTheLastElement(Cat *elem) {


for(;elem != 0; elem = elem->Get_Next());

return(elem->Get_Next());

}

2012. júl. 9. 21:18
 6/9 A kérdező kommentje:

Ezt nézzétek ez az új.

Lefordul csak futásidejű hiba.

[link]

2012. júl. 9. 21:31
 7/9 iostream ***** válasza:
100%

Mindjárt gondoltam, hogy te vagy a láncolt listás is. Komolyan, tényleg, őszintén: hagyd abba a programozást. Egész egyszerűen nem megy, teljesen alap fogalmakkal nem vagy tisztában, és ha leírjuk neked abszolút érthetően, te elkezdesz hisztizni, hogy de nem értem és brühühü és hülyék vagytok.


while(elem != 0)

elem = elem->Get_Next();


return(elem->Get_Next());


Addig is itt egy találóskérdés: ha a while ciklus addig fut, amíg a feltétele hamissá nem válik, és az elem != 0 kifejezés pontosan akkor hamis, ha az elem == 0, akkor vajon jó ötlet-e ezután erre az elem változóra tagfüggvényt hívni?

2012. júl. 9. 22:49
Hasznos számodra ez a válasz?
 8/9 A kérdező kommentje:
Értem de akkor,hogy írjak ilyen függvényt az én példámra?
2012. júl. 10. 02:26
 9/9 iostream ***** válasza:

"Nem teljesen értem a gondodat, de ha az utolsó előtti elemet akarod visszaadni, akkor if ( act->itsNext->itsNext == NULL ), X->Y->NULL -ből X-et adja vissza."


Itt megkaptad a választ. Ezt fogalmazd át a te példádra. Lesznek speciális esetek (ez a 0 és 1 elemű lista, amikor nincs utolsó előtti).

2012. júl. 10. 11:02
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, 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!