我目前正在研究双向链接列表,想问些什么。这是在特定位置插入节点的功能。
“ 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;
即使没有此功能,该功能也能完美运行。
我知道要插入特定位置,您需要从头开始并遍历该位置(位置1),然后将位置的下一个指针设置为temp,将temp的下一个指针设置为position的下一个指针,并将temp的上一个指针设置为position 。但这可以通过以下三行代码来实现
temp->next=s->next;
s->next=temp;
temp->prev=s;
那么此行temp->next->prev=temp;
的用途是什么
这行是什么意思?
答案 0 :(得分:3)
由于您在s
和s->next
之间插入了一个节点,并且它是一个双链表,所以s->next
的上一个节点应指向新插入的节点,其中{{ 1}},因此是temp
答案 1 :(得分:1)
考虑两个节点:s <==> n
您要在它们之间插入第三个节点“ temp”。
让我们逐行查看代码的最后4行的含义
df.txt <- data.frame(
variable = c("Loc1", "Loc2", "Loc3", "Loc4"),
x = c(2, 2, 2, 2),
y = c(1, 1, 1, 1),
label = paste0("Text in facet ", 1:4))
x %>%
gather(variable, value, -Parameter) %>%
ggplot(aes(x = Parameter, y = value, fill = variable)) +
geom_bar(stat = "identity", position = "dodge")+
facet_grid(. ~ variable) +
geom_text(data = df.txt, aes(x, y, label = label))
此行将使前向链接从temp变为n: temp-> n
temp->next = s->next
此行将向后链接从n添加到温度。
换句话说,这可以读为temp->next->prev=temp
这只是使从n到temp的向后链接 temp <-n
(temp->next)->prev=temp
这将添加从s到温度的前向链接: s-> temp
s->next=temp
这将添加从temp到s的反向链接: s <-temp
结合所有链接,我们得到:s <==> temp <==> n