Element (als Pointer) in eine geordnete Liste einfuegen

nitro-Merlin

Mitglied
Hi, ich will ein Element (als Pointer) in eine geordnete Liste einfuegen und habe mir dazu folgenden Code ausgedacht. Meine Frage ist nun ob das so klappt, oder ob ich da nen Denkfehler drin haben.

Code:
typedef struct elem *IntList;
typedef struct elem { int wert;
					  IntList next;
					} elemtype;




void InsertEle(IntList *l, IntList Ele)
{
	IntList help = *l;
	help = (IntList) malloc(sizeof(elemtype));

	if ((help==NULL) || (help->wert >= Ele->wert))
	{
		help->wert = Ele;
		help->next = help;
		*l=help; // Ele wird zum ersten Element in der Liste
	}
	else InsertEle(&(*l)->next,Ele->wert);
}
 
Zuletzt bearbeitet:
Hi!

nitro-Merlin hat gesagt.:
Meine Frage ist nun ob das so klappt, oder ob ich da nen Denkfehler drin haben.

Wie ist es mit "Test and Try"?

nitro-Merlin hat gesagt.:
Code:
1) typedef struct elem *IntList;
2) typedef struct elem { int wert;
3)					  IntList next;
4)					} elemtype;




void InsertEle(IntList *l, IntList Ele)
{
5)	IntList help = *l;
6)	help = (IntList) malloc(sizeof(elemtype));

7)	if ((help==NULL) || (help->wert >= Ele->wert))
	{
8)		help->wert = Ele;
9)		help->next = help;
10)		*l=help; // Ele wird zum ersten Element in der Liste
	}
11)	else InsertEle(&(*l)->next,Ele->wert);
}

Ich geh mal davon aus das l dein Listen Anker ist.

Wenn man den Code compiliert wird der Compiler vermutlich im Dreieck springen und nach beseitigen der Fehler wirds vermutlich immer noch nicht klappen.

Nur nen kleiner Ausschnitt:
5) der Erfolg dieser Zeile wird in der Zeile 6 zunichte gemacht, da hier der wert von help eben kurz überschrieben wird.
7) sollte help == NULL sein, wird das Prog abstürzen, da "->" nicht exestiert.
falls help != NULL dann wird help->wert uninitialisiert sein und was dann?
8) kann nicht klappen: ínt wird IntList zugewiesen
9) kleine Endlosliste?
10) und wo ist der Ursprüngliche Teil der Liste? Die Informationen darüber verschwinden im Nirvana
11)Ebenfalls int in IntList versucht zu konvertieren

was noch mit dem typedef schief läuft wird sich zeigen, hab mich bis jetzt immer darum gemogelt :-)!

Vielleicht meldet sich noch jemand anders dazu.

Gruß Michael
 
Zurück