双向链表节点插入位置
Doubly linked List Node insertion at position
我正在研究双向链表,想请教一下。这是在特定位置插入节点的功能。
"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;
即使没有这个,该功能也能完美运行。
我了解要在特定位置插入,您需要从头开始并遍历到该位置(position-1)并将该位置的下一个指针设置为temp,将temp的下一个指针设置为position的下一个指针和temp的前一个指针定位。但是可以通过下面三行代码实现
temp->next=s->next;
s->next=temp;
temp->prev=s;
那么这条线有什么用temp->next->prev=temp;
这行是什么意思?
由于你在s
和s->next
之间插入了一个节点,它是一个双向链表,所以s->next
的前一个节点应该指向新插入的节点temp
,因此 temp->next->prev=temp;
考虑两个节点:s<==>n
你想在它们之间插入第三个节点'temp'。
让我们逐行看看最后4行代码的含义
temp->next = s->next
这一行将使向前link从temp到n:temp->n
temp->next->prev=temp
此行将 backward link 从 n 添加到 temp。
换句话说,这可以读作(temp->next)->prev=temp
这只是使向后 link 从 n 到 temp temp<-n
s->next=temp
这会将 link 从 s 向前添加到 temp:s->temp
temp->prev=s
这将从 temp 到 s 向后添加 link:s<-temp
结合所有 links,我们得到:s<==>temp<==>n
我正在研究双向链表,想请教一下。这是在特定位置插入节点的功能。
"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;
即使没有这个,该功能也能完美运行。
我了解要在特定位置插入,您需要从头开始并遍历到该位置(position-1)并将该位置的下一个指针设置为temp,将temp的下一个指针设置为position的下一个指针和temp的前一个指针定位。但是可以通过下面三行代码实现
temp->next=s->next;
s->next=temp;
temp->prev=s;
那么这条线有什么用temp->next->prev=temp;
这行是什么意思?
由于你在s
和s->next
之间插入了一个节点,它是一个双向链表,所以s->next
的前一个节点应该指向新插入的节点temp
,因此 temp->next->prev=temp;
考虑两个节点:s<==>n
你想在它们之间插入第三个节点'temp'。
让我们逐行看看最后4行代码的含义
temp->next = s->next
这一行将使向前link从temp到n:temp->n
temp->next->prev=temp
此行将 backward link 从 n 添加到 temp。
换句话说,这可以读作(temp->next)->prev=temp
这只是使向后 link 从 n 到 temp temp<-n
s->next=temp
这会将 link 从 s 向前添加到 temp:s->temp
temp->prev=s
这将从 temp 到 s 向后添加 link:s<-temp
结合所有 links,我们得到:s<==>temp<==>n