我目前正在研究双向链表,想请教一下。这是在特定位置插入节点的函数。
“temp”是指向节点的指针。
void insertpos(int value,int pos)
{
node *s;
temp=new node;
s=head;
for(int i=0;i<pos-1;i++)
{
s=s->next;
}
temp->data=value;
if(s->next==nullptr)
{
s->next=temp;
temp->next=nullptr;
temp->prev=s;
}
else
{
temp->next=s->next;
temp->next->prev=temp;
s->next=temp;
temp->prev=s;
}
}
这行代码是什么意思 temp->next->prev=temp;
即使没有这个,该功能也能完美运行。
我知道要在特定位置插入,您需要从 head 开始并遍历到那个位置 (position-1) 并将该位置的下一个指针设置为 temp,将 temp 的下一个指针设置为下一个位置指针,将 temp 的前一个指针设置为位置.但这可以通过下面三行代码实现
temp->next=s->next;
s->next=temp;
temp->prev=s;
那么这行temp->next->prev=temp;
有什么用
这条线是什么意思?
最佳答案
由于您在 s
和 s->next
之间插入了一个节点,并且它是一个双向链表,所以 s->next
previous 节点应指向新插入的节点,其间是 temp
,因此 temp->next->prev=temp;
关于c++ - 双向链表节点插入位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51835082/