链式物理结构(动态分配节点)
来源:互联网 发布:施工组织设计软件 编辑:程序博客网 时间:2024/06/05 17:05
//以动态分配内存的方式插入新节点
include
include
struct node{
int num;
node* p_next;
};
int main()
{
//定义首尾节点
node head = {0};
node tail = {0};
head.p_next = &tail;
int num;
//循环添加新节点
while(1)
{
//为新节点动态分配内存
node* p_node = (node*)malloc(sizeof(node));
//输入数字为负数时,终止输入
printf(“请输入一个非负数:”);
scanf(“%d”, &num);
if (num < 0)
{
break;
}
//分配内存失败,终止
if (!p_node) break;
//为新节点赋值
p_node->num = num;
p_node->p_next = NULL;
//将新节点插入到链式物理结构中
for(node* pn_tmp = &head; pn_tmp != &tail; pn_tmp = pn_tmp->p_next)
{
node* p_first = pn_tmp;
node* p_mid = p_first->p_next;
node* p_last = p_mid->p_next;
//指向最后一个节点时直接插入 或 输入数字大于当前值时插入到下一个位置
if (p_mid == &tail || p_mid->num > p_node->num)
{
//节点插入在p_first和p_mid之间
p_first->p_next = p_node;
p_node->p_next = p_mid;
break;
}
}
}
//输出链式物理结构中的所有元素
for(node* pn_tmp = &head; pn_tmp != &tail; pn_tmp = pn_tmp->p_next)
{
node* p_first = pn_tmp;
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”);
//释放动态分配的节点
for(node* pn_tmp = &head; pn_tmp != &tail; pn_tmp = pn_tmp->p_next)
{
node* p_first = pn_tmp;
node* p_mid = p_first->p_next;
node* p_last = p_mid->p_next;
if(p_mid != &tail)
{
//删除节点
p_first = p_last;
//释放节点
free(p_mid);
//指针置空
p_mid = NULL;
}
}
return 0;
}
- 链式物理结构(动态分配节点)
- 【C语言】从小到大插入新节点(链式物理结构)
- 【C语言】循环添加节点(链式物理结构)
- 【C语言】删除一个节点(仅一个)(单向物理链式结构)
- 链式物理结构演示
- 链式物理结构2
- 链式物理结构3
- 链式物理结构4
- Day16、文件拷贝、数据结构(逻辑结构、物理结构)顺序物理结构、链式物理结构
- 链式物理结构(元素查找、元素删除、元素插入)
- 数据结构--二叉树--节点的修改(链式结构--队列)
- 线性表的链式存储结构(无头节点)
- 【数据结构】单向线性链式物理结构list
- 7.28 链式物理存储结构的实现
- Day17、链式存储结构动态分配内存、栈的顺序存储结构和链式存储结构
- 使用动态分配的链式结构实现的二叉搜索树
- 链式存储结构————动态分配
- 数据结构--二叉树--双亲、孩子和兄弟节点的查询(链式结构--队列)
- JQUERY AJAX请求成功,返回了数据,但是不进SUCCESS的问题
- LinuxC多线程详解
- Special Matrices
- JAVA教程到处都是 你知道如何学习JAVA编程吗
- Background execution not allowed:
- 链式物理结构(动态分配节点)
- 数据结构——顺序表
- SurfaceView相关概念的整理
- Java Web自定义MVC框架
- Java菜鸟学习日记36
- IntelliJ IDEA 当pom.xml更新时,自动加载pom.xml
- java乱码问题处理
- 华为OJ python实现
- (CVTE 笔试题)已知一个数组,不使用除法构造另一数组。