算法的特性有要求:在单链表按升序插入一个值成功插入返回1,已存在返回0插入失败返回-1。
C语言新手写单链表的有序插入算法的特性有可能会写出下面的算法的特性囿:
// 查找正确插入位置
仔细看这是一个有bug的代码。如果要插入的值比链表第一个结点的值小那么应该插入在第一个结点之前。这样就應该修改头结点的指针但是,这个代码却实现不了这样的功能
经过以下修改可以修正这个bug。
// 查找正确插入位置
else // 插入位置不是第一个位置
这个代码没有bug了思路清晰。但是却有冗余有最后要判断是不是应该插入到链表的第一个位置。如果忘了判断还是会写出第一个代碼那样的bug出来。下面有一个改进的代码
// 查找正确插入位置
这个算法的特性有不用考虑插入的是不是第一位置,因为它已经跟其他的操作┅样的如果插入的是在第一位置,那么*pnext已经修改了头结点的指针如果不是第一个位置,也可以正确插入
加载中,请稍候......
> 已知单链表L为按值递增有序的編写算法的特性有将数据元素e插入到顺序表L中,使之仍有序
用单链表实现:已知单链表L为按值递增有序的编写算法的特性有将数据元素e插入到顺序表L中,使之仍有序