[012]链表笔记--在链表中插入一个节点

链表动态插入优化算法
本文介绍了一种链表动态插入优化算法,该算法能够根据输入数与链表元素的关系,灵活地选择插入位置,包括链表头部、尾部及中间。通过遍历链表并比较节点值,实现高效插入操作。

插入的数目为num,如果比head小,则插在链表头;如果比链表中元素都大,则插在结尾;否则插在链表中;

代码如下:

 1 Link* Link::Add(Link* pLink, int num) {
 2     Link *p1,*p2;
 3     p1 = pLink;
 4     Link *p0 = new Link;
 5     p0->id = num;
 6     
 7     while ((p0->id > p1->id) && (p1->next != NULL)) {
 8         p2 = p1;
 9         p1 = p1->next;
10     }
11     // 插在表头或中间
12     if(p0->id <= p1->id) {
13         // 表头
14         if (pLink == p1) {
15             p0->next = p1;
16             pLink = p0;
17         }
18         else{
19             p2->next = p0;
20             p0->next = p1;
21         }
22     }
23     // 插入结尾
24     else {
25         p1->next = p0;
26         p0->next = NULL;
27     }
28 return pLink;
29 }

 

转载于:https://www.cnblogs.com/hustcser/p/3941952.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值