线性表的链式存储实现
typedef struct LNode *List;struct LNode{ElementType Data[MAXSIZE];int Last;};struct LNode L;List PtrL;//1.求表长 int Length(List PtrL) {List p = PtrL; /*p指向表的第一个结点*/int j = 0;while(p){p = p->Next;j++; /*当前p指向的是第j个结点*/}return j; }//2.查找 //(1)按序号查找:FindKth; List FindKth(int K,List PtrL) {List p = PtrL;int i=1;while(p!=NULL && i < K){p = p->Next;i++;}if(i==K) return p; /*找到第K个,返回指针*/else return NULL /*否则返回空*/ }//3.按值查找 Find List Find(ElementType X,List PtrL) {List p = PtrL;while( p!=NULL && p->Data !=X)p = p->Next;return p; }3.插入(在第i-1个(1<=i && i<=n+1)个结点后插入一个值为X的新结点
//插入操作实现 List lnsert(ElementType X,int i,List PtrL) {List p,s;if(i==1){ /*新结点插入在表头*/s = (List)malloc(sizeof(struct LNode)); /*申请、填装结点*/s->Data = X;s->Next = PtrL;return s; /*返回新表头指针*/}p = FindKth(i-1,PtrL); /*查找第i-1个结点*/if(p==NULL){ /*dii-1个不存在,不能插入*/printf(" 参数i错 “);return NULL;}else{s = (List)malloc(sizeof(struct LNode)); /*申请、填装结点*/s->Data = X;s->Next = p->Next; /*新结点插入在第i-1个结点的后面*/p->Next = s;return PtrL;} } //4.删除(删除链表的第i(1<=i && i<=n)个位置上的结
List Delete(int i,List PtrL) {List p,s;if(i==1){ /*若要删除的是表的第一个结点*/s = PtrL; /*s指向第1个结点*/if(PtrL!=NULL)PtrL = PtrL->Next; /*从链表中删除*/elsereturn NULL;free(s); /*释放被删除结点*/return PtrL;}p = FindKth(i-1,PtrL); /*查找第i-1个结点*/if(p == NULL){printf("第%d个结点不存在",i-1);return NULL;}else if(p->Next == NULL){printf("第%d个结点不存在",i);return NULL;}else{s = p->Next; /*指向第i个结点*/p->Next = s->Next; /*从链表中删除*/free(s); /*释放被删除结点*/return PtrL;} }
转载于:https://www.cnblogs.com/King-boy/p/10504521.html
线性表的链式存储实现相关推荐
- 数据结构和算法:(3)3.2线性表的链式存储结构
线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素也就是说你这个可以放在A地点,这个可以放在E地点,A地点和E地点中间可以隔开一个C地点和D地点,这样是允许的),这组存储单元可以存在 ...
- 链表list(链式存储结构实现)_5 线性表的链式存储结构
系列文章参考资料为<大话数据结构>,源码为个人私有,未经允许不得转载 线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,可以使连续的,也可以不连续,也就意味这些元素可以 ...
- JAVA数据结构 线性表的链式存储及其实现
2019独角兽企业重金招聘Python工程师标准>>> 2线性表的链式存储及其实现 虽然顺序表具有随机存取的特点是一种有用的存储结构但是也有缺陷: (1) 若需要给顺序表增 ...
- 从零开始学数据结构和算法(二)线性表的链式存储结构
链表 链式存储结构 定义 线性表的链式存储结构的特点是用一组任意的存储单元的存储线性表的数据元素,这组存储单元是可以连续的,也可以是不连续的. 种类 结构图 单链表 应用:MessageQueue 插 ...
- C和C++线性表的链式存储
C和C++线性表的链式存储 基本概念 链表技术领域推演 设计与实现 重要技术场景图 链表链式存储_插入 链表链式存储_删除 优点和缺点 基本概念 链式存储定义 为了表示每个数据元素与其直接后继元素之间 ...
- 【数据结构】线性表的链式存储-单链表
单链表的定义 线性表的链式存储又称为单链表,它是指通过一组任意的存储单元来存储线性表中的数据元素. 为了建立起数据元素之间的线性关系,对每个链表结点,除了存放元素自身的信息之外,还需要存放一个指向其后 ...
- 《数据结构》c语言版学习笔记——其他链表(线性表的链式存储结构Part2)
线性表的链式存储结构 数据结构系列文章 第三章 循环链表.双向链表 文章目录 线性表的链式存储结构 前言 一.循环链表 (一)定义 (二)尾指针 二.双向链表 (一)定义 (二)代码 总结 前言 提示 ...
- 《数据结构》c语言版学习笔记——单链表结构(线性表的链式存储结构Part1)
线性表的链式存储结构 数据结构系列文章 第二章 单链表结构 文章目录 线性表的链式存储结构 前言 一.单链表的建立 代码 二.单链表的读取 代码 三.单链表的插入 代码 四.单链表的删除 代码 五.单 ...
- 数据结构开发(5):线性表的链式存储结构
0.目录 1.线性表的链式存储结构 2.单链表的具体实现 3.顺序表和单链表的对比分析 4.小结 1.线性表的链式存储结构 顺序存储结构线性表的最大问题是: 插入和删除需要移动大量的元素!如何解决? ...
- 数据结构第三篇——线性表的链式存储之单链表
♥注:未经博主同意,不得转载. 线性表的链式存储结构的特点是用一组任意的存储单元来存储线性表的数据元素,这些单元可以分散在内存中的任意位置上,其在物理上可以是连续的,也可以是不连续的.具有链式存储结构 ...
最新文章
- LeetCode 961 N-Repeated Element in Size 2N Array --python,java解法
- 在Windows上使用LaTeX
- 阶乘和matlab实现
- Unreal Engine 4 —— 异步加载关卡的实现方法及思考
- 拓扑检查中的一些问题(为啥没自相交)
- python3一爬虫库url_python3爬虫之Urllib库(一)
- Eclipse 配置
- 嵌入式基础面八股文——孤儿进程、僵尸进程、守护进程的概念(3)
- 【果壳笔记】生物信息学——陈润生老师部分
- 矩阵连乘积问题--动态规划
- 蓝桥杯 带分数 By Assassin
- Hi,欢迎大家来到阿毛小猪的博客,分享自己学习中的经验,默默的前行,聆听心的声音...
- 蓝雪花怎么养 蓝雪花养殖方法及注意事项
- vc使用默认的浏览器打开网页
- 图片翻译如何操作?图片翻译的方法分享.
- C# json解析字符串总是多出双引号_json从立地到成佛
- 实用的语音转文字转换器,告别文件转换难题
- 6.20 C语言练习(找出1至99之间的全部同构数。同构数是这样的一组数:它出现在平方数的右边。)
- matplotlib 绘制柱状图且上方显示数据
- eversync safari_EverSync安卓版
热门文章
- php之is_null,PHP中is_null($x)和$x===null的简单比较
- 51单片机mysql_[学习笔记]15个QA让你快速入门51单片机开发
- IDEA 日常小技巧
- pve网卡直通虚拟机pve失联打不开解决方案,不用重新安装pve
- LayuiAdmin 滚动条设置问题解决
- 阶段3 1.Mybatis_09.Mybatis的多表操作_1 mybatis表之间关系分析
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_07 缓冲流_4_缓冲流的效率测试_复制文件...
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_02 递归_2_练习_使用递归计算1-n之间的和...
- SpringBoot + MyBaties 实现其XML方式
- 【求最大公共子串长度】