gpt4 book ai didi

c++ - 在双循环链表的末尾插入节点

转载 作者:行者123 更新时间:2023-11-30 01:57:24 24 4
gpt4 key购买 nike

我正在编写一个程序来对双循环链表执行各种操作。所有其他函数都工作正常,但在努力尝试之后,我不知何故无法理解为什么我的程序在执行 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.

关于c++ - 在双循环链表的末尾插入节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18769013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com