Práce seznamu – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Práce seznamu – C / C++ – Fórum – Programujte.comPráce seznamu – C / C++ – Fórum – Programujte.com

 

pouk
~ Anonymní uživatel
2 příspěvky
6. 3. 2010   #1
-
0
-

Ahoj prosím poraďte jak toto pracuje, jak sem se dival na datovou strukturu jednosměrný seznam tak ve strukture se nachazi struct seznam *dalsi; a zajimalo jak tento ukazatel funguje, jak může ukazovat na další část paměti když se mu pokaždě přiřadí hodnota NULL...

Nahlásit jako SPAM
IP: 77.48.244.–
Bald3rr0
Super člen
6. 3. 2010   #2
-
0
-

To pouk : NULL se tomu přiřazuje na začátku, protože neexistuje další prvek. Ale pokud chceš přidat další prvek do seznamu, uložíš do *dalsi adresu toho nového. Ukážu to na jednoduchym kódu

struct SEZNAM {

int iValue;
SEZNAM *pNext;
SEZNAM() { pNext = NULL; };
~SEZNAM();
};

int main() {
SEZNAM *pSeznam;
SEZNAM *pTemp;

pSeznam = new SEZNAM;
pTemp = new SEZNAM;
pSeznam->iValue = 0;

// Teď má pSeznam->pNext hodnotu NULL;

pTemp->iValue = 1;
pSeznam->pNext = new SEZNAM; // Alokujeme další
memcpy(pSeznam->pNext, pTemp, sizeof(*pTemp));

// Teď má pSeznam->pNext adresu vytvořenou při alokaci a uchovává stejné data jako pTemp;
// Pro skutečnou práci se seznamem je dobré si někde uchovávat informaci o prvním a posledním prvku

// A nezapomenout na uvonění, které bude složitější než tady v té ukázce
delete pSeznam->pNext; delete pSeznam; delete pTemp;
}

Nahlásit jako SPAM
IP: 82.100.0.–
pouk
~ Anonymní uživatel
2 příspěvky
6. 3. 2010   #3
-
0
-

To Bald3rr : to se musí pokažde při vytváření nevé hodnoty iValue alokovat paměť přes new Seznam

Nahlásit jako SPAM
IP: 77.48.244.–
KIIV
~ Moderátor
+43
God of flame
6. 3. 2010   #4
-
0
-

pokud by se jen pridavalo, tak muzes zneuzit alokace po blocich (dejme tomu pole 100hodnot a pokud potrebujes 101 tak uz alokace dalsiho a navazat...)
pokud planujes i to mazani hodnot tak uz je to takovy dost narocny (u alokace kazdeho zvlast proste jen na predchozi das ukazatel naslednika toho mazaneho a free/delete)

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 34 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý