2014-12-04 55 views
2

我正在寫一個函數,它需要一個鏈接列表反轉元素,然後打印結果。我運行它時無法正常工作;它只打印第一個值。顛倒鏈接列表並打印結果

typedef struct node { 
    ElemType val; 
    struct node *next; 
} NODE; 


struct list_struct { 
    NODE *front; 
    NODE *back; 
}; 

//reverse elements in list 
void lst_reverse(LIST *l) { 
    NODE *p = l->front; 
    NODE *prev = NULL; 
    NODE *current = p; 
    NODE *next; 

    while (current != NULL) { 
     next = current->next; 
     current->next = prev; 
     prev = current; 
     current = next; 
    } 
    p = prev; 

    lst_print(l); 
} 

回答

2

分配p = prev不會在你的LIST更新前的指針。當你打電話給lst_print(l)時,你會從新列表的前面開始,因此它會在一次迭代後停止。

l->front = prev; 
l->back = p; 
+0

感謝您真正幫助的解釋:

相反,你應該像更新列表的前面(反面)。思考完後纔有意義。再次感謝你。 – Rbutler93 2014-12-04 07:49:18