向升序排列的单链表中插入一个值,要求插入后仍为升序链表
来源:互联网 发布:mac玩fifaonline3发烫 编辑:程序博客网 时间:2024/06/10 01:25
今天看书时看到单链表的插入操作,觉得这种思想不错,故mark一下。
介绍:已有一个链表,链表是按值的升序链接而成的。现要插入一个值,也就是新增一个节点,而且要求插入后链表仍为升序排列的。
直接上代码:
typedef struct _Node{int value;struct_Node*link;}Node;int list_insert(Node** linkp,int value){register Node* current;register Node* new;//寻找准确的插入位置while((current=*linkp)!=NULL)&¤t->value<value)linkp = &t->link;new= (Node*)malloc(sizeof(Node));if(new == NULL)return false;new->value = value;new->link= current;*linkp= new;return true;}
说明下,这儿传入的参数是头节点的地址,而不是头节点,这点主要是针对当插入的数时最小的情况,当插入的值比已有链表中所有的值都小时,就得修改头节点,这时就只有传入指针的指针,也就是头结点的地址。
另外一个就是这里面没移动一次节点,都取了当前节点地址来赋值给linkp,这也是针对头结点这个特殊节点来的,以为我们插入一个节点,就是要找到插入点的上一个节点的link,而这个link可能是普通节点的link,也有可能是头结点,
linkp = &t->link;
就是来抽象这两种不同的情况,把这情况的节点的属性都看成一种节点。
1 0
- 向升序排列的单链表中插入一个值,要求插入后仍为升序链表
- 向升序单向链表中插入一个节点
- 向升序单向链表中插入一个节点
- 向升序单向链表中插入一个节点
- 华为OJ 向升序单向链表中插入一个节点
- 华为机试题:向升序单向链表中插入一个节点
- 将两个升序排列的链表合并后升序排序打印.
- 编写函数,将大小为10的数组里面的整数升序排列,并编写一个函数,使得插入一个数之后,数组里面的整数依然按照升序排列
- 无序单向链表的插入排序(升序)
- 有a,b两个已按学号升序排序的链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,仍按学号升序排列。
- 关于链表的升序排列问题
- 在升序排序的数组中插入一个元素
- 插入排序(升序)
- 在已经排好序的线性表中插入一个数,还是升序
- 第十九周项目一:动态链表体验(六):将值为X的结点插入到升序的链表中
- 升序和倒序的插入排序代码
- 插入排序的递归算法(升序)
- 将两个同为升序的有序链表,请将其合成为一个也是升序的链表。
- iOS AFN框架简单使用
- 多任务操作数据库时:2006, 'MySQL server has gone away'
- 零基础HTML及CSS编码练习(一)
- perl pod文档使用 =head =cut =pod pod2text 实现程序usage说明
- HTTP 1.1与HTTP 1.0的比较
- 向升序排列的单链表中插入一个值,要求插入后仍为升序链表
- GObject 学习笔记汇总---12
- java中的存储区域
- CSS基础学习2-CSS设置颜色与背景
- 安装破解torando记录
- Object——equals()方法与==运算符
- 安卓简单技术-Webview自适应手机屏幕
- vmware虚拟机与主机之间复制文件
- Bean的生命周期