添加元素時,我打印出鏈接列表的頭部和尾部,相當簡單。C簡單鏈接列表 - 錯誤輸出
int main(){
struct node{
struct node* next;
struct node* previous;
double value;
};
struct LinkedList{
struct node* head;
struct node* tail;
};
void addValue(struct LinkedList* list,double newValue){
struct node newNode;
newNode.next = NULL;
newNode.value=newValue;
if(list->head == NULL){
newNode.previous=NULL;
list->head= &newNode;
list->tail=&newNode;
}
else
{
newNode.previous= list->tail;
list->tail->next= &newNode;
list->tail= &newNode;
}
printf("%f\n",list->head->value);
printf("%f\n",list->tail->value);
}
struct LinkedList l1;
l1.head=NULL;
l1.tail=NULL;
addValue(&l1,5);
addValue(&l1,6);
addValue(&l1,7);
addValue(&l1,8);
}
但輸出我得到的是
5.000000 5.000000 6.000000 6.000000 7.000000 7.000000 8.000000 8.000000
相反,我所期望
5.000000 5.000000 5.000000 6.000000 5.000000 7.000000 5.000000 8.000000
任何想法,爲什麼?
您應該使用'malloc'命令在堆上創建新節點,而不是像當前所做的那樣在堆棧上創建新節點。 – catchmeifyoutry
@catchmeifyoutry很好看,它看起來像懸掛指針。 – 2014-01-28 19:23:55
@remyabel你可以嘗試寫一個答案,如果你想,我有一些其他的東西要做;) – catchmeifyoutry