我已經在C中編寫了雙鏈表的代碼,並且它從頭到尾遍歷正確,但是從尾(遍歷尾)到頭都被卡住在一個無限循環中,只打印最後一個節點的數據,我無法弄清楚什麼是錯誤的。在雙向鏈表中不能遍歷從尾到尾
#include <stdio.h>
#include <stdlib.h>
struct node {
int data;
struct node *prev;
struct node *next;
};
typedef struct node list;
list *head, *current, *newn, *end;
int main() {
int x, y;
current = (list*)malloc(sizeof(list));
printf("enter data:");
scanf("%d", ¤t->data);
current->next = NULL;
current->prev = NULL;
head = current;
printf("do you want to enter more:");
scanf("%d", &x);
while (x == 1) {
current->next = (list*)malloc(sizeof(list));
printf("enter data:");
scanf("%d", ¤t->next->data);
current->next->prev = current->next;
current->next->next = NULL;
current = current->next;
end = current;
printf("do yo want to enter more:");
scanf("%d", &x);
}
newn = head;
while (newn != NULL) {
printf("%d:%d:%d->", newn->prev, newn->data, newn->next);
newn = newn->next;
}
while (end->prev != NULL) {
printf("%d", end->data);
end = end->prev;
}
}
我刪除標籤[標籤:C++]。這個社區中的人們區分C和C++非常嚴格。標記垃圾郵件不喜歡,可能會導致票數減... – Scheff
'while(newn!= NULL)'不同於while(end-> prev!= NULL)' – Lou
'current-> next-> prev = current - > next;' - >'current-> next-> prev = current;' – Marian