doppelt verkettete Liste < Softwaretechnik+Pro < Praktische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 21:28 Mi 30.03.2011 | Autor: | bandchef |
Aufgabe | Löschen eines nachfolgenden Elements in einer doppelt verkettete Listen. |
Da ich ja ein nachfolgendes Element in einer doppelt verketteten Liste löschen will möchte ich mir die Liste vor und nach dem Löschen ausgeben. Leider spuckt mir der Compiler einen Fehler aus. Nämlich in der Funktionendeklaration für die Ausgabe der Liste. Ich nenne diese showList(). Der Compiler sagt, dass 'noe' gefolgt von 'void' nicht zulässig sei.
Ich weiß leider nicht was ich falsch gemacht haben könnte. Könnt ihr mir helfen?
Hier der Code:
1: | #include<iostream>
| 2: | using namespace std;
| 3: |
| 4: |
| 5: | struct node
| 6: | {
| 7: | node* previous;
| 8: | int value;
| 9: | node* next;
| 10: | }
| 11: |
| 12: |
| 13: |
| 14: | void showList(node *nextElement, node *liste)
| 15: | {
| 16: | nextElement = liste;
| 17: | while(nextElement != NULL)
| 18: | {
| 19: | cout << nextElement->value << endl;
| 20: | nextElement = nextElement->next;
| 21: | }
| 22: | }
| 23: |
| 24: |
| 25: |
| 26: | void *deleteAfter(node *list)
| 27: | {
| 28: | list->next->previous = list->previous;
| 29: | list->previous->next = list->next;
| 30: | }
| 31: |
| 32: |
| 33: |
| 34: | int main()
| 35: | {
| 36: | node *liste1, *liste2, *liste3, *liste4;
| 37: | node *nextElement = 0;
| 38: |
| 39: |
| 40: | liste1 = new node;
| 41: | liste1->value = 1;
| 42: |
| 43: | liste2 = new node;
| 44: | liste1->value = 2;
| 45: |
| 46: | liste3 = new node;
| 47: | liste3->value = 3;
| 48: |
| 49: | liste4 = new node;
| 50: | liste4->value = 4;
| 51: |
| 52: | liste1->next = liste2;
| 53: | liste2->next = liste3;
| 54: | liste3->next = liste4;
| 55: | liste4->next = NULL;
| 56: |
| 57: |
| 58: | showList(nextElement, liste1);
| 59: | //deleteAfter(liste2);
| 60: |
| 61: |
| 62: | return 0;
| 63: | } |
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 00:03 Do 31.03.2011 | Autor: | felixf |
Moin!
> 1: | struct node
| 2: | > {
| 3: | > node* previous;
| 4: | > int value;
| 5: | > node* next;
| 6: | > }
| 7: | >
| 8: | > void showList(node *nextElement, node *liste)
| 9: | > {
| 10: | > nextElement = liste;
| 11: | > while(nextElement != NULL)
| 12: | > {
| 13: | > cout << nextElement->value << endl;
| 14: | > nextElement = nextElement->next;
| 15: | > }
| 16: | > } |
Es fehlt ein Semikolon nach den geschweiften Klammern vom struct. Mit der aktuellen Syntax denkt C++ beim void, dass du eine Variable vom Typ node mit dem Namen void anlegen willst (oder eine Funktion namens void definieren willst, die einen node zurueckgibt) , was nicht geht. (Spaetestens dannach kommt dann die Frage, was showList direkt hinter der Variablendeklaration soll.)
Also, fueg ein Semikolon ein, und das sollte dann gehen
Eine Frage ist aber noch: warum uebergibst du den Parameter nextElement an showList? Der Wert wird doch gar nicht gebraucht, du ueberschreibst ihn sofort.
LG Felix
|
|
|
|