[英]Inserting node at the end of a double, circular linked list
我正在編寫一個程序,在雙循環鏈表上執行各種操作。 所有其他功能都運行良好,但在努力之后,我無法理解為什么我的程序在執行insert_end()函數時被終止。 功能是:
void list::insert_end()
{ int data;
node*temp,*p;
if(start==NULL)
cout<<"CREATE list first!:"<<endl;
else
{ cout<<"enter data to enter in a node after the last node:"<<endl;
cin>>data;
temp=new node(data);
while(p->next!=start)
{ p=p->next;
} // now p points to last node of doubly,circular list!! i.e. the linked list is traversed till p's next pointer points to start
temp->pre=p;
temp->next=p->next;
p->next->pre=temp;
p->next=temp;
display();
}
}
這是一個菜單驅動的程序。
請幫我看看insert_end函數..我是初學者...
你有一個未初始化的指針p
在這里聲明:
node*temp,*p;
你在這里取消引用它,盡管沒有將它設置為任何值:
while(p->next!=start)
也許你想添加p=start;
讓它從第一個節點開始。
請注意,如果您有一個雙向鏈接循環列表,那么您不需要循環來查找最后一個節點:最后一個節點是第一個節點之前的節點,即start->pre
。
您沒有初始化節點指針p
!
在到達while循環之前,需要將p設置為列表的起始節點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.