【C语言】从小到大插入新节点(链式物理结构)
来源:互联网 发布:爱贝国际少儿英语 知乎 编辑:程序博客网 时间:2024/06/06 01:53
/* * 单向物理链式结构演示 * 步骤:定义结构体->定义结构体变量->链接->写循环->用if去除尾部,对剩余的进行处理 * 提示: 处理单一节点的时候只需处理p_mid即可,处理某个位置的时候处理p_first和p_mid中间的位置 * */#include <stdio.h>typedef struct node { int num; struct node *p_next;}node;int main() { node head = {0}, tail = {0}, node1 = {20}, node2 = {40}, node3 ={60}, node4 = {50}; node *p_node = NULL; head.p_next = &node1; node1.p_next = &node2; node2.p_next = &node3; node3.p_next = &tail;/************************************************************************************ * 添加新点 * 处理某个位置的时候处理p_first和p_mid中间的位置 ************************************************************************************/ //插入新节点,从小到大 for(p_node = &head; p_node !=&tail; p_node = p_node->p_next) { node *p_first = p_node; node *p_mid = p_first->p_next; node *p_last = p_mid->p_next; if(p_mid == &tail || p_mid->num > node4.num) {//从小到大排列也就是遇到第一个比新点大的就插在它前面,有个特殊情况就是它比所有的都大,这个时候p_mid是指向tail(尾节点)的,此时将新点插入到最后面就可以 p_first->p_next = & node4; //新点插入到p_first和p_mid中间就可以 node4.p_next = p_mid; break; //注意这里要结束 } } for(p_node = &head; p_node != &tail; p_node = p_node->p_next) { node *p_first = p_node; node *p_mid = p_first->p_next; node *p_last = p_mid->p_next; if(p_mid != &tail) { printf("%d ", p_mid->num); } } printf("\n"); return 0;}
阅读全文
0 0
- 【C语言】从小到大插入新节点(链式物理结构)
- 【C语言】循环添加节点(链式物理结构)
- 【C语言】删除一个节点(仅一个)(单向物理链式结构)
- 链式物理结构(动态分配节点)
- 链式物理结构(元素查找、元素删除、元素插入)
- 链式物理结构演示
- 链式物理结构2
- 链式物理结构3
- 链式物理结构4
- Day16、文件拷贝、数据结构(逻辑结构、物理结构)顺序物理结构、链式物理结构
- 算法 c语言 链式插入排序算法
- 线性表——链式结构(c语言实现)
- C语言线性表(基于链式结构)
- 栈(C语言实现,基于链式结构)
- 队列(C语言实现,基于链式结构)
- 树(C语言实现,基于链式结构)
- 线性表的链式存储结构(C语言实现)
- C语言实现直接插入排序—从小到大排
- eclipse创建maven项目
- ZOJ 3804 YY's Minions(模拟)
- Spring 与Hessian 整合的简单远程调用实例
- Linux nfs安装
- 常用的特征选择方法
- 【C语言】从小到大插入新节点(链式物理结构)
- 打印出100以内的质数,一行显示5个
- jvm&garbage collection
- Js中的事件
- 七牛云使用教程
- 条款03:尽可能使用const
- Java设计模式之模板方法设计模式(银行计息案例)
- 【C语言】循环添加节点(链式物理结构)
- 01背包跟完全背包问题