[英]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.