[线性表] 1 静态链表

版权声明:本文为博主原创文章,若有错误之处望大家批评指正!转载需附上原文链接,谢谢! https://blog.csdn.net/summer_dew/article/details/83077380

用数组描述的链表,也叫游标实现法

指针下的数组顺序:[999]–>[1]–>[2]–>[3]–>[4]–>[0]–>[5]–>[6]–>…–>[998]–>[999]
分为两部分:

  1. 具有数据的数据链:[999]–>[1]–>[2]–>[3]–>[4]
  2. 还未存储数据的空链:[0]–>[5]–>[6]–>…–>[998]
    中间,用数据链的最后一个元素[4]指向空链的头指针[0]
    最后,空链的最后一个元素[998]–>[999]

如下图,解释四个特殊数据:

  1. list[0].游标–>空链的头指针
  2. list[MAX_SIZE-1].游标–>数据链的头指针
  3. 游标值为0–>list[4]是数据链的结尾,指向空链的头指针[0]
  4. 空链的最后元素list[998]指向数据链的头指针[999]

这里写图片描述

数据结构

#define MAX_SIZE 1000
typedef struct{
     ElemType data;
     int cur;
} Node,StaticLinkList[MAX_SIZE];

申请空间

分配了MAX_SIZE个Node,即定义了一个Node[MAX_SIZE]数组

StaticLinkList list;
下标 0 1 2 3 4 5 6 999
Data                  
Cur                  

初始化

  1. [0],[MAX_SIZE-1]的位置不存放数据
  2. [0].cur:下一个空闲的区域
  3. [MAX_SIZE-1]:头指针,指向第一个元素
下标 0 1 2 3 4 5 6 999
Data                  
Cur 1 2 3 4 5 6 7 0

添加元素

这里写图片描述

指定位置插入元素

这里写图片描述

猜你喜欢

转载自blog.csdn.net/summer_dew/article/details/83077380