静态链表(五)
2015-08-19 09:54
169 查看
静态链表
单链表是一种动态链表。
用数组描述的链表是静态链表。静态链表的存储结构如下:
下面的为一静态链表的实例;
注意:数组下标为0的元素不存放任何数据且游标是指向第一个没有存放数据的元素的下标。下标为MAXSIZE - 1,也不存放任何数据且游标是指向第一个存放数据的元素的下标。其它的每一个元素的游标都是存放它下一个元素的下标地址,即其它每一个元素的游标都是指向它下一个元素。
上面实例有一错误,就是链表最后一个元素的游标为0,图上对应的就是o元素的游标应该为0。
静态链表的初始化相当于初始化数组,如下所示:
静态链表的特性:
1)对数组的第一个和最后一个元素做特殊处理,它们的data不存放数据。
2)未使用的数组元素称为备用链表。
3)数组的第一个元素,即下标为0的那个元素的cur存放备用链表的第一个结点的下标;数组的最后一个元素,即下标为MAXSIZE - 1 的cur则存放第一个有数据的元素的下标,相当于单链表中的头结点作用。
4)链表的最后一个元素(不一定是数组的最后一个元素),链表最后一个元素的cur一般存放0,表示它后面的结点为空了。
单链表是一种动态链表。
用数组描述的链表是静态链表。静态链表的存储结构如下:
<span style="font-size:18px;">#define MAXSIZE 1000 typedef int ElemType; typedef struct { ElemType data;//数据 int cur;//游标 }Component,StaticLinkList[MAXSIZE];</span>
下面的为一静态链表的实例;
注意:数组下标为0的元素不存放任何数据且游标是指向第一个没有存放数据的元素的下标。下标为MAXSIZE - 1,也不存放任何数据且游标是指向第一个存放数据的元素的下标。其它的每一个元素的游标都是存放它下一个元素的下标地址,即其它每一个元素的游标都是指向它下一个元素。
上面实例有一错误,就是链表最后一个元素的游标为0,图上对应的就是o元素的游标应该为0。
静态链表的初始化相当于初始化数组,如下所示:
#define MAXSIZE 1000 typedef int ElemType; typedef struct { ElemType data;//数据 int cur;//游标 }Component,StaticLinkList[MAXSIZE]; int InitList(StaticLinkList tan) { for(int i = 0;i < MAXSIZE - 1;i++) { tan[i].cur = i + 1; } tan[MAXSIZE - 1].cur = 0; return 1; }//静态链表此时为空的,所以初始化后,游标赋值情况与上面的有点不一致,但是不影响
静态链表的特性:
1)对数组的第一个和最后一个元素做特殊处理,它们的data不存放数据。
2)未使用的数组元素称为备用链表。
3)数组的第一个元素,即下标为0的那个元素的cur存放备用链表的第一个结点的下标;数组的最后一个元素,即下标为MAXSIZE - 1 的cur则存放第一个有数据的元素的下标,相当于单链表中的头结点作用。
4)链表的最后一个元素(不一定是数组的最后一个元素),链表最后一个元素的cur一般存放0,表示它后面的结点为空了。
相关文章推荐
- 类似百度的搜索提示框,数据库中查询关键字
- luajavabridge 使用过程出现问题的总结
- 设置控件位置的两种方法
- 干货分享:大数据下云安全有何策略
- 算法竞赛入门经典:第十章 数学概念与方法 10.4大整数取模
- 访问量和在线人数统计
- Node开发入门
- C/C++题库
- 无法加载shockwave flash
- Communications link failure Last packet sent to the server was 0 ms ago.问题解决
- 程序退出当前activity的方法
- 关于数组的几道面试题
- AltiumDesigner96——PCB常用规则
- 所有Win10用户均可使用Windows反馈应用 Insider还有额外福利
- jvmd的一些文章
- Java代码链接mysql数据库和oracle数据库
- 对字符串操作的各种笔试题
- c#索引器
- 算法竞赛入门经典:第十章 数学概念与方法 10.3同余与模算术
- MDK下的RO-DATA,RW-DATA,ZI-DATA,