Reverse-Traversierung einfach verknüpfte Liste in C++

Kürzlich bin ich gebeten worden, diese Frage in einem interview. Alles was ich tun konnte, ist die traverse von 9 zu 1 aus einer verknüpften Liste, beginnend von 0 bis 9. Hier ist der code:

#include <iostream>

typedef struct node {                                                               
      int data;               //will store information
      node *next;             //the reference to the next node
};  
node *head;

int printList(node *traverse) {
    if (traverse->next == NULL) {
        return -1;
    }
    traverse=traverse->next;
    printList(traverse);

    cout << traverse->data << endl;
    return 0;
}

int main() {
    node *temp = NULL;
    node *begin = NULL;      
    for (int i = 0; i < 10; i++) {
        temp = new node;
        temp->data = i;
        if (begin == NULL) {
            begin = temp;
        }
        if (head != NULL) {
            head->next = temp;
        }
        head = temp;
        head->next = NULL;
    }
    head = begin;
    printList(head);
    return 0;
}

1) Wie kann ich drucken Sie 0(das erste element) mit der printList() rekursive Funktion?

2) Wie kann ich ersetzen printList() rekursive Funktion mit while-Schleife?

3) Wenn in einem interview gefragt, hat die main() Funktion hat richtige Knoten, Initialisierung und insertation?

Mein Fehler. Entfernt Kommentar um Verwirrung zu vermeiden.

InformationsquelleAutor Sarp Kaya | 2013-07-03

Schreibe einen Kommentar