T
thefy
Gast
Hallo Leute,
ich möchte eine doppelt verkettete Liste erstellen und einige Funktionen implementieren.
Als Vorgabe soll ich 2 Structs benutzen. Ein Node Struct mit Wert, previous-Zeiger, Next-Zeiger und ein List Struct, das Zeiger zum head und tail des Node Structs hat. Das ganze soll mit Library files erstellt werden, also ein .h file, ein .c file das sich auf das .h file bezieht und eben ein main file.
Wenn ich die structs im .h file definiere reicht dann z.B.: struct Node; ? Oder müssen sie komplett in das header file übernommen werden? Bei Funktionen wird ja auch nur Ausgabetyp und Name reingeschrieben. Erst im source file werden sie dann genauer definiert.
Ich habe die structs jetzt so im source file der library stehen. Ich denke das passt so.
In Bezug auf struct List steht bei der Aufgabe dabei, dass die beiden Zeiger, falls die Liste leer ist, "NULL" sein müssen. Wo genau muss ich das beachten?
Ich habe es in dieser Form (mit 2 Structs) noch nie gesehen. Deshalb bin ich etwas verwirrt.
Zum Beispiel ist die erste Funktion: struct List* new_empty_list()
Mit der eine neue leere Liste zurückgegeben wird. Ich frage mich wie man das genau umsetzt.
Wenn ich nur den Node struct hätte würde ich einen neuen Zeiger auf ein Node erstellen und mit malloc dynamisch zuordnen. Dann Anfangswerte zuteilen. Aber durch den 2. Struct weiß ich nicht genau was ich machen muss.
Ich hoffe ich habe meine Probleme verständlich ausgedrückt.
Danke schon mal!
ich möchte eine doppelt verkettete Liste erstellen und einige Funktionen implementieren.
Als Vorgabe soll ich 2 Structs benutzen. Ein Node Struct mit Wert, previous-Zeiger, Next-Zeiger und ein List Struct, das Zeiger zum head und tail des Node Structs hat. Das ganze soll mit Library files erstellt werden, also ein .h file, ein .c file das sich auf das .h file bezieht und eben ein main file.
Wenn ich die structs im .h file definiere reicht dann z.B.: struct Node; ? Oder müssen sie komplett in das header file übernommen werden? Bei Funktionen wird ja auch nur Ausgabetyp und Name reingeschrieben. Erst im source file werden sie dann genauer definiert.
Ich habe die structs jetzt so im source file der library stehen. Ich denke das passt so.
Code:
struct Node {
long data;
struct Node* previous;
struct Node* next;
}
struct List {
struct List* head;
struct List* tail;
}
In Bezug auf struct List steht bei der Aufgabe dabei, dass die beiden Zeiger, falls die Liste leer ist, "NULL" sein müssen. Wo genau muss ich das beachten?
Ich habe es in dieser Form (mit 2 Structs) noch nie gesehen. Deshalb bin ich etwas verwirrt.
Zum Beispiel ist die erste Funktion: struct List* new_empty_list()
Mit der eine neue leere Liste zurückgegeben wird. Ich frage mich wie man das genau umsetzt.
Wenn ich nur den Node struct hätte würde ich einen neuen Zeiger auf ein Node erstellen und mit malloc dynamisch zuordnen. Dann Anfangswerte zuteilen. Aber durch den 2. Struct weiß ich nicht genau was ich machen muss.
Ich hoffe ich habe meine Probleme verständlich ausgedrückt.
Danke schon mal!