静态链表

用数组描述的链表,即称为静态链表,它的表现形式即为结构体数组,结构体变量包括数据域data和指针域next。这种存储结构,仍需要预先分配一个较大的空间,但在作为线性表的插入和删除操作时不需移动元素,仅需修改指针,故仍具有链式存储结构的主要优点。而且在不具有指针类型的高级语言中,无法使用指针类型,也就无法用指针实现单链表结构,所以静态链表是个不错的选择。

       静态链表的定义为:

                l 顺序表数组中的元素由两个数据域组成:data和next

                l Data域用于存储数据

                l Next域用于存储下一个元素在数组中的下标

       这里介绍静态链表的常用操作:

                l 创建静态链表

                l 销毁静态链表

                l 清空静态链表

                l 表元素插入

                l 表元素删除

                l 获取表中某个位置的元素

                l 获取表长度

                l 获取表的最大长度

       

       代码总分为三个文件:

               StaticList.h : 放置功能函数的声明,以及表和表结点的声明 

               StaticList.h : 放置功能函数的定义,以及表和表结点的定义

               Main.c    : 主函数,使用功能函数完成各种需求,不过一般用作测试

       这里着重说下获取操作﹑插入操作和删除操作:

              获取操作:

                       获取第pos个元素方法:

                       首先判断线性表﹑pos位置是否合法

                       由表头开始通过next指针移动pos次后,当前元素的next域即要获取元素在数组中的下标

 

              插入操作:

                       如图

                                          静态链表_第1张图片

                       插入元素方法:

                               首先判断线性表﹑插入位置是否合法

                               在数组中从头开始查找空闲位置index(其实也就是判断每个数组元素的next是否为空闲状态)

                               由表头开始通过next域移动pos次后,当前元素的next域为要插入的位置

                               将新元素插入

                               静态链表长度加1

              删除操作:

                        如图

                       静态链表_第2张图片

                        删除元素方法:

 

                              判断表和删除位置是否合法

                              获取第pos个元素

                              将第pos个元素从链表中删除

                              表长度减1

你可能感兴趣的:(静态链表)