amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > Warum ist das keine Rekursion? [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2005-06-21, 09:51 h

DrNOP
Posts: 4118
User
Hallo zusammen,

ich mal wieder - als Programmierer verkleidet. ;)

Ich habe in meinem hiesigen lstLib.h folgende Definition gefunden:

code:
typedef struct node		/* Node of a linked list. */
    {
    struct node *next;		/* Points at the next node in the list */
    struct node *previous;	/* Points at the previous node in the list */
    } NODE;


Naja ... es scheint zu funktionieren, sonst hätten sie's sicher nicht so gemacht - aber warum ist das keine Rekursion? Ich meine, die definieren eine Struktur "node", die innerhalb der Struktur "node" benutzt wird!? :shock2:
--
Es gibt keine Notbremse für all den technischen Humbug, mit dem wir unsere Zeit vertrödeln.

[ - Answer - Quote - Direct link - ]

2005-06-21, 10:17 h

thomas
Posts: 7717
User
@DrNOP:

Weil das keine ganze "struct node" ist, sondern nur ein Zeiger auf eine "struct node" (beachte den Stern !). Der Speicher für einen Zeiger ist immer gleich groß, den kann er definieren, ohne die Struktur selbst zu kennen.

Sowas wäre eine Rekursion, die nicht funktioniert:

code:
struct node {
   struct node node1;
   struct node node2;
   char name[20];
   };


Hier wird eine struct node innerhalb der anderen struct node definiert, das geht nicht.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Answer - Quote - Direct link - ]

2005-06-21, 10:18 h

fisch08
Posts: 692
User


[ Dieser Beitrag wurde von fisch08 am 21.06.2005 um 10:19 Uhr editiert. ]

[ - Answer - Quote - Direct link - ]

2005-06-21, 11:01 h

TerAtoM
Posts: 1230
User
Wenn es kein Zeiger wäre würde die verschachtelung unendlich gross sein... und ich mag bezweifeln das Dein Rechner einen "unedlichkeitsspeicher" hat ;)

CU TerA
--
TerAtoM
(A4K 604e/233MHz 060/50MHz 146MB CV64_3D+SD)
Band: http://www.TERATOM.de
Privat: http://www.TerAmigA.de.vu
Profession: http://www.Xavo.de
ICQ: 18056588

[ - Answer - Quote - Direct link - ]

2005-06-21, 11:21 h

DrNOP
Posts: 4118
User
Zitat:
Original von thomas:
Weil das keine ganze "struct node" ist, sondern nur ein Zeiger auf eine "struct node" (beachte den Stern !). Der Speicher für einen Zeiger ist immer gleich groß, den kann er definieren, ohne die Struktur selbst zu kennen.

D.h., die Zeiger könnten statt als Typ "node" auch als "INT32" oder sowas definiert sein, richtig?

--
Es gibt keine Notbremse für all den technischen Humbug, mit dem wir unsere Zeit vertrödeln.

[ - Answer - Quote - Direct link - ]

2005-06-21, 11:31 h

Holger
Posts: 8116
User
Zitat:
Original von DrNOP:
D.h., die Zeiger könnten statt als Typ "node" auch als "INT32" oder sowas definiert sein, richtig?

Ts, ts, sowas macht man doch nicht. :lickout:
Ein Zeiger kann auch 16Bit oder 64 Bit sein. Der Compiler soll das machen, damit Du nicht darüber nachdenken muß.
Aber prinzipiell hast es jetzt richtig erkannt.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]

2005-06-21, 16:16 h

DrNOP
Posts: 4118
User
Zitat:
Original von Holger:
Ts, ts, sowas macht man doch nicht. :lickout:
Ein Zeiger kann auch 16Bit oder 64 Bit sein. Der Compiler soll das machen, damit Du nicht darüber nachdenken muß.

Neee, bei uns macht man extra sowas, weil wir uns auf einem Embedded System mit 68020 bewegen. Und damit man sicher weiß was das jeweilige Ding ist, wird eigentlich alles als INT16, INT32 und so definiert.
Frag mich nicht, die Software besteht seit wenigstens 10 Jahren - nur ich bin neu hier ...


Zitat:
Aber prinzipiell hast es jetzt richtig erkannt.
Danke - wenigstens was! :glow:
--
Es gibt keine Notbremse für all den technischen Humbug, mit dem wir unsere Zeit vertrödeln.

[ - Answer - Quote - Direct link - ]

2005-06-22, 13:57 h

Mad_Dog
Posts: 1944
User
Zitat:
Original von DrNOP:

code:
typedef struct node		/* Node of a linked list. */
    {
    struct node *next;		/* Points at the next node in the list */
    struct node *previous;	/* Points at the previous node in the list */
    } NODE;


Naja ... es scheint zu funktionieren, sonst hätten sie's sicher nicht so gemacht - aber warum ist das keine Rekursion?


Das ist zwar keine Rekursion, aber die Definition einer so genannten "rekursiven Struktur". In diesem Fall sieht das aus, wie eine doppelt verkettete Liste. D.h. jeder Knoten hat einen Zeiger auf seinen Vorgänger und Nachfolger.


--

http://www.norman-interactive.com

[ Dieser Beitrag wurde von Mad_Dog am 22.06.2005 um 13:57 Uhr editiert. ]

[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Programmierung > Warum ist das keine Rekursion? [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.