静态链表在数据结构中是如何实现的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1135个文字,预计阅读时间需要5分钟。
静态链表++在无指针类型的语言中,可以使用顺序存储结构模拟链表。有人想用数组代替指针来描述单链表,首先我们让数组的元素都是由两个数据域组成,即data和cur,也就是data, cur。
静态链表
++在没有指针类型的语言中,可以用顺序存储结构模拟链表。有人想出来用数组代替指针,来描述单链表,首先我们让数组的元素都是由两个数据域组成,由data和cur,也就是说,数组的每一个下标都对应着一个data和一个cur。数据域data,用来存放数据元素,也就是我们通常要来处理的数据,而游标cur相当于单链表中的next指针,存放该元素的后继在数组中的下标。这种用数组描述的链表叫做静态链表,这种描述方法还叫游标实现法,为了方便插入数据,我们通常将数组建立得稍大一些,以便有一些空闲空间可以便于插入时不至于溢出。++
//线性表的静态链表存储结构
#define MAXSIZE 1000
typedef struct
{
ElemType data;
int cur;//游标,为0时表示无指向
}Component,SLinkList[MAXSIZE];
我们对数组第一个和最后一个元素做特殊处理,不存数据。我们通常把未使用的的数组元素称为备用链表。而数组第一个元素,即下标为0的元素的cur就存放备用链表的第一个结点的下标。而数组的最后一个元素的cur则存放第一个有数值的元素的下标,相当于单链表中的头结点作用。S[0].cur指示第一个结点在数组中的位置,如果说i=S[0].cur,则S[i].data存储线性表第一个元素,且S[i].cur指示第二个结点在数组中的位置。一般来说,若第i个分量表示链表的第k个结点,则S[i].cur指示第k+1个结点的位置。
本文共计1135个文字,预计阅读时间需要5分钟。
静态链表++在无指针类型的语言中,可以使用顺序存储结构模拟链表。有人想用数组代替指针来描述单链表,首先我们让数组的元素都是由两个数据域组成,即data和cur,也就是data, cur。
静态链表
++在没有指针类型的语言中,可以用顺序存储结构模拟链表。有人想出来用数组代替指针,来描述单链表,首先我们让数组的元素都是由两个数据域组成,由data和cur,也就是说,数组的每一个下标都对应着一个data和一个cur。数据域data,用来存放数据元素,也就是我们通常要来处理的数据,而游标cur相当于单链表中的next指针,存放该元素的后继在数组中的下标。这种用数组描述的链表叫做静态链表,这种描述方法还叫游标实现法,为了方便插入数据,我们通常将数组建立得稍大一些,以便有一些空闲空间可以便于插入时不至于溢出。++
//线性表的静态链表存储结构
#define MAXSIZE 1000
typedef struct
{
ElemType data;
int cur;//游标,为0时表示无指向
}Component,SLinkList[MAXSIZE];
我们对数组第一个和最后一个元素做特殊处理,不存数据。我们通常把未使用的的数组元素称为备用链表。而数组第一个元素,即下标为0的元素的cur就存放备用链表的第一个结点的下标。而数组的最后一个元素的cur则存放第一个有数值的元素的下标,相当于单链表中的头结点作用。S[0].cur指示第一个结点在数组中的位置,如果说i=S[0].cur,则S[i].data存储线性表第一个元素,且S[i].cur指示第二个结点在数组中的位置。一般来说,若第i个分量表示链表的第k个结点,则S[i].cur指示第k+1个结点的位置。

