C: Jak funguje struct node * next? [uzavřeno]

Zavřeno . Tato otázka vyžaduje podrobnosti nebo jasnost . Momentálně nepřijímá odpovědi.

Komentáře

  • Pouhé deklarace jako Node* neznamená, že by to směřovalo kamkoli, pouze říká kompilátoru, že ' sa ukazatel na některé Node (nebo vůbec Node). Musí existovat skutečný kód, který nastaví ukazatel next tak, aby ukazoval na další Node. To je to, o čem jste byli zmatení?
  • Jelikož (zatím) neexistuje struct Node, žádný její člen neexistuje. Žádný člen tedy nikam neukazuje.

Odpovědět

Váš kód je jen malou částí propojeného seznamu.

Myšlenka je, že váš seznam se skládá z n výskytů struktury, kterou jste nazvali „Node“. Potřebujete ukazatel na PRVNÍ z nich, tento ukazatel vám řekne paměťové umístění této první struktury (místo pro to obvykle požadujete ručně pomocí malloc). Struktura tohoto paměťového bloku je definována vaší strukturou „Node“. Říká vám, že nejprve existují nějaké bajty pro int (sizeof int vám řekne, jak mutch) a pak existují nějaké bajty pro adresu (toto je váš ukazatel „další“). Na poslední položce vašeho propojeného seznamu obvykle použijete null jako hodnotu pro další, tímto způsobem můžete zkontrolovat, zda je vaše aktivní položka poslední. Chcete-li přidat položku do svého seznamu, musíte pro ni malloc paměť a změnit další ukazatel poslední položky na místo v paměti, které malloc vydal. (A nezapomeňte nastavit další ukazatel položky, kterou jste právě vytvořili, na null.)

Tímto způsobem funguje propojený seznam. Doufám, že to trochu pomůže! propojený obrázek seznamu

Komentáře

  • Ve skutečnosti by bylo správnější mít šipku z " dalšího " na " Objekt " (nebo ještě lépe, v levém horním rohu následujícího pole). V současné podobě to vypadá, že ' s ukazuje na " dalšího " člena struktury, ale ve skutečnosti to ' s ukazuje na další základní instanci dat ' s základní adresou. Můžete také zvolit, na co má koncový prvek ' s " next " směřovat; může ukazovat na např. NULL (v takovém případě lze seznam procházet pouze jedním směrem), nebo může ukazovat na první prvek seznamu (tvořící kruhový propojený seznam).
  • Můžete také samozřejmě mít každý člen seznamu ukazuje na " další " a na " předchozí " prvek seznamu. To vyžaduje trochu více účetnictví při úpravách seznamu, ale umožňuje procházení seznamu v libovolném směru, což může být při čtení výhodné. Stejně jako u všeho ostatního ve strojírenství je to ' sa kompromis.

Odpověď

Toto je součást definice typu. To samo o sobě nepoukazuje na nic, ze stejného důvodu, že do obývacího pokoje nelze umístit skutečný gauč a televizi nakreslenou na sadu plánů pro dům. Jednoduše určuje „to je to, co se sem má dostat.“

Způsob, jakým ukazuje na další uzel v propojeném seznamu, je ten, že když někdo skutečně vytvoří uzly, přiřadí hodnotu poli popsáno touto definicí, což je ukazatel, který obsahuje adresu jiného Node.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *