在单链表中,在偶数位插入新节点?写出算法思想以及相应的代码?

在单链表中,在偶数位插入新节点?写出算法思想以及相应的代码?,第1张

在单链表中插入节点的算法思想是:

1.创建一个新节点,包含要插入的数据。

2.从链表的头部开始遍历链表,找到要插入位置的前一个节点。

3.将新节点的 next 指针指向前一个节点的 next 指针所指向的节点。

4.将前一个节点的 next 指针指向新节点。

下面是用 Java 实现的代码:

第一步:首先找到插入位置,节点 s 将插入到节点 p 之前

第二步:将节点 s 的前驱指向节点 p 的前驱,即 s->prior = p->prior

第三步:将节点 p 的前驱的后继指向节点 s 即 p->prior->next = s

第四步:将节点 s 的后继指向节点 p 即 s->next = p

第五步:将节点 p 的前驱指向节点 s 即 p->prior = s

第一步:找到即将被删除的节点 p

第二步:将 p 的前驱的后继指向 p 的后继,即 p->prior->next = p->next

第三步:将 p 的后继的前驱指向 p 的前驱,即 p->next->prior = p->prior

第四步:删除节点 p 即 delete p

如果已知一个节点指针pre和一个节点指针cur,要把cur插入到pre节点之后,很显然要保证链表不会断开而丢失后面的节点,要先把后面的节点指针(指向lat的指针)保存下来,即有cur->next = pre->next,然后把cur连接的一串链表连接到pre后面,即pre->next = cur

上面介绍了,在一个节点之后插入节点的情况。这是通常的情况。如果要向一个链表的头部插入节点,就只需要将新节点的下一个指针指向链表的头指针即可。

在这种情况下,有两点要注意:

1,链表是否为空链表

2,要插入的节点是不是空指针。

代码实现:

//向单链表中插入一个节点(插入在链开始处)

//输入参数:单链表的头指针和要插入的节点指针

//输出参数:无

//返回值:指向单链表的头指针

SingleList* Insert(SingleList *head,SingleList *node)

{

if(node == NULL)

{

return head

}

else if(head == NULL)

{

return node

}

node->next = head

head = node

return head

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/10970069.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-12
下一篇 2023-05-12

发表评论

登录后才能评论

评论列表(0条)

保存