《c和指针》笔记--简洁的单项链表插入操作
来源:互联网 发布:ip网络广播系统破解版 编辑:程序博客网 时间:2024/06/05 03:42
单项链表插入操作,我想应该是最基础不过的东西,今天要介绍的是比较简洁的版本。
需求:插入一个node到链表的正确位置,当前链表中节点的value已经按照由小到大进行排列。
传统的插入操作:
int insertNode(Node** rootp,int new_value){Node *current;Node *previous;Node *new;current = *rootp;previous = NULL;while(current != NULL && current->value < new_value){previous = current;current = current->link;}new = (Node*)malloc(sizeof(Node));if(new == NULL)return 0;new->value = new_value;new->link = current;if(previous == NULL){*rootp = new;}else{previous->link = new;}return 1;}
上面的算法虽然没有什么问题,但是需要定义current和previous2个变量,
而且需要对插入到第一个node的情况作特殊处理。
下面请看改进版本,只要定义一个current变量,而且不需要插入到第一个node的情况作特殊处理。
int insertNode(Node** linkp,int new_value){Node *current;Node *new;while(current = *linkp)!= NULL && current->value < new_value){linkp = &t->link;}new = (Node*)malloc(sizeof(Node));if(new == NULL)return 0;new->value = new_value;new->link = current;*linkp = new;return 1;}
如果链表开始的状态如下:
可见,new node需要插入到一个表头。
插入前的各指针的状态如下:
插入new node
- 《c和指针》笔记--简洁的单项链表插入操作
- 【C++】单项链表的操作
- 单项链表的定位,插入,删除
- Java 版本的单项链表插入
- C语言单项链表的实现
- 关于c语言编写 单项链表 的创建、插入、修改、删除、显示、退出 的程序案例
- 单项链表插入指定数据
- 《c和指针》笔记-简洁的二叉查找树删除node方法
- 单项链表的建立
- 单项链表的反转
- 单项链表的实现
- 单项链表的创建读取和整表删除
- 用C语言实现单项链表
- C 语言指针,单指针和双指针的学习
- 【java】单项链表的实现
- 80.创建带头的单项链表
- 单项链表的逆置
- 带表头的循环单项链表
- 新人开淘宝店做代销必须要了解的东西,你知道吗?
- C# 串口通讯的数据丢失和同步异步问题
- C#如何让子界面显示在父界面本体上
- Android电源管理
- dp之最长公共子序列算法
- 《c和指针》笔记--简洁的单项链表插入操作
- 20130115-使用Grails Shiro Plugin实现身份验证01
- 20130116-使用Grails Shiro Plugin实现身份验证02
- 20130117-使用Grails Shiro Plugin实现身份验证03
- 20130121-使用Grails Bootstrap Plugin实现界面美化
- 20130123-Grails手工增加资源文件
- 20130415-Linux试玩随笔-01-安装vsftp
- 20130415-Linux试玩随笔-02-安装jdk、grails
- 20130419-Linux试玩随笔-03-安装mysql