向升序排列的单链表中插入一个值,要求插入后仍为升序链表
2016-10-18 16:08
471 查看
今天看书时看到单链表的插入操作,觉得这种思想不错,故mark一下。
介绍:已有一个链表,链表是按值的升序链接而成的。现要插入一个值,也就是新增一个节点,而且要求插入后链表仍为升序排列的。
直接上代码:
说明下,这儿传入的参数是头节点的地址,而不是头节点,这点主要是针对当插入的数时最小的情况,当插入的值比已有链表中所有的值都小时,就得修改头节点,这时就只有传入指针的指针,也就是头结点的地址。
另外一个就是这里面没移动一次节点,都取了当前节点地址来赋值给linkp,这也是针对头结点这个特殊节点来的,以为我们插入一个节点,就是要找到插入点的上一个节点的link,而这个link可能是普通节点的link,也有可能是头结点,
就是来抽象这两种不同的情况,把这情况的节点的属性都看成一种节点。
reference:《C和指针》
介绍:已有一个链表,链表是按值的升序链接而成的。现要插入一个值,也就是新增一个节点,而且要求插入后链表仍为升序排列的。
直接上代码:
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;
就是来抽象这两种不同的情况,把这情况的节点的属性都看成一种节点。
reference:《C和指针》
相关文章推荐
- 华为OJ 向升序单向链表中插入一个节点
- 有a,b两个已按学号升序排序的链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,仍按学号升序排列。
- 已有a,b两个链表,每个链表中的结点包括学号,成绩。要求把两个链表合并,按学号升序排列。
- 假设以两个元素依值递增有序排列的线性表A和B分别表示两个集合,现要求另辟空间构成一个顺序链表C
- 线性单链表 初始化 插入 取出 头插法 合并升序排列
- 将两个升序排列的单链表合并为一个降序排列的单链表且不增加新的结点
- [华为机试练习题]49.向升序单向链表中插入一个节点
- 编写函数,将大小为10的数组里面的整数升序排列,并编写一个函数,使得插入一个数之后,数组里面的整数依然按照升序排列
- 华为机试题:向升序单向链表中插入一个节点
- 【单链表经典面试题解析三】在无头单链表的一个非头节点前插入一个节点(要求不能遍历单链表)
- 已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列
- 向升序单向链表中插入一个节点
- 向升序单向链表中插入一个节点
- 已有 a、b 两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按成绩升序排列。
- WV.9-动态链表-插入一个数到有序链表中并按原序排列
- 假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并为一个按元素值递减 有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原装(即A表和
- 不同的取法输出顺序可以不考虑。取字符( 从标准输入读入一个由字母构成的串(不大于30个字符)。从该串中取出3个不重复的字符,求所有的取法。取出的字符,要求按字母升序排列成一个串。)
- 向升序单向链表中插入一个节点
- 假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并为一个按元素值递减 有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原装(即A表和
- 有a,b两个已按学号升序排序的链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,仍按学号升序排列。