You are not logged in.

  • Login

1

Friday, January 8th 2010, 8:47pm

Einfach verkettete Liste

Hallo,

habe ein kleines Problem in c.

Ich hab eine einfach verkettete Liste.

Source code

1
2
3
4
5
struct liste{
   	int data;
   	struct liste *next; 
}
anfang;


Ich habe mir ne methode gebastelt um em ende ein element eingefügt wird.

Source code

1
2
3
4
5
6
struct liste* in(int element, struct liste *start){
   	struct liste *startneu = (struct liste *) malloc(sizeof(struct liste)); //hier ist der Fehler
   	startneu -> next = start;
   	startneu -> next = element;   	
   	return startneu;
   	}


Was muss noch in die Klammer nach malloc und warum?

Danke und Grüße

This post has been edited 1 times, last edit by "ul7ima" (Jan 8th 2010, 9:05pm)


2

Friday, January 8th 2010, 11:05pm

Öhm, negativ, am malloc ist doch gar nichts verkehrt? Es alloziiert genau so viel Speicher wie eine liste-Instanz benötigt.
Und genau das brauchst du ja um ein Element anzuhängen.

Es ist btw. etwas verwirrend wenn du von einer Funktion sprichst die ein Element ans Ende anhängt, aber eins Postest die einen neuen Anfang erstellt.

Wenn man also davon absieht dass in Zeile 4 bei der Wertzuweisung statt auf next auf data verwiesen werden muss, ist die Funktion doch OK?
Es seiden du willst wirklich ein Element an das andere Ende anhängen: In dem Fall ist das vorgehen etwas anders:
  1. Letztes Element suchen (wo .next == NULL)
  2. neues Element erstellen (genauso wie hier) und füllen (.data = Wert, .next = NULL)
  3. das .next des alten Elements auf das neue verweisen lassen

3

Friday, January 8th 2010, 11:40pm

Ahh, ja habe das next nicht gesehen ;>
Danke

Similar threads

Social bookmarks