线性表-2
来源:互联网 发布:接触网中级工软件 编辑:程序博客网 时间:2024/06/04 17:41
线性表的链式存储实现
不要求逻辑上相邻的两个元素物理上也相邻 ;通过“链”建 立起数据元素之间的逻辑关系。
• 插入、删除不需要移动数据元素,只需要修改“链”。
//链式存储typedef struct LNode *PtrToLNode;#define ElementType intstruct LNode { ElementType Data; PtrToLNode Next;};typedef PtrToLNode Position;typedef PtrToLNode List;/* 查找 */#define ERROR NULLPosition Find(List L, ElementType X){ Position p = L; /* p指向L的第1个结点 */ while (p && p->Data != X) p = p->Next; /* 下列语句可以用 return p; 替换 */ if (p) return p; else return ERROR;}/* 带头结点的插入 *//*注意:在插入位置参数P上与课程视频有所不同,课程视频中i是序列位序(从1开始),这里P是链表结点指针,在P之前插入新结点 */int Insert(List L, ElementType X, Position P){ /* 这里默认L有头结点 */ Position tmp, pre; /* 查找P的前一个结点 */ for (pre = L; pre&&pre->Next != P; pre = pre->Next); if (pre == NULL) { /* P所指的结点不在L中 */ printf("插入位置参数错误\n"); return 0; } else { /* 找到了P的前一个结点pre */ /* 在P前插入新结点 */ tmp = (Position)malloc(sizeof(struct LNode)); /* 申请、填装结点 */ tmp->Data = X; tmp->Next = P; pre->Next = tmp; return 1; }}/* 带头结点的删除 *//*注意:在删除位置参数P上与课程视频有所不同,课程视频中i是序列位序(从1开始),这里P是拟删除结点指针 */int Delete(List L, Position P){ /* 这里默认L有头结点 */ Position tmp, pre; /* 查找P的前一个结点 */ for (pre = L; pre&&pre->Next != P; pre = pre->Next); if (pre == NULL || P == NULL) { /* P所指的结点不在L中 */ printf("删除位置参数错误\n"); return 0; } else { /* 找到了P的前一个结点pre */ /* 将P位置的结点删除 */ pre->Next = P->Next; free(P); return 1; }}
阅读全文
0 0
- 线性表2
- 线性表(2)
- 顺序线性表2
- 线性表练习题2
- 线性表---(2)
- DataStructure-2-线性表
- 线性表2--单链表
- 线性表(2)
- 线性表2
- 数据结构-线性表(2)
- 线性表-2
- 线性表--线性存储
- 线性表 线性结构
- 线性表(2)--用线性表将集合合并
- 【线性表项目1 - 线性表相关函数2】
- 第2章 线性表
- 合并2个线性表
- 线性表(总结2)
- java基础学习总结——抽象类
- 基于.netstandard的权限控制组件
- mysql数据在网页上显示乱码解决方案
- 等价表达式-OJ
- Django学习笔记 -- 2 正则表达式
- 线性表-2
- Radan 自动排序文本的设置
- ajax返回json类型日期格式化
- java基础学习总结——接口
- OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。 本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为R
- HDU 3002 King of Destruction(全局(无向图)最小割(SW))
- Java基础学习总结——Java对象的序列化和反序列化
- Java-抽象方法和抽象类
- java基础学习总结——Java制作证书的工具keytool用法总结