数据结构——静态链表
1.静态链表存储结构
(1)静态链表的定义:在单链表的一个节点中存在一个数据域和一个指针域;而静态链表使用数组来代替指针,我们让数组的元素由两个数据域组成,data和cur(游标)。用数组表述的链表就叫做静态链表。
(2)静态链表的存储结构:由于静态链表是数组构成的,我们为了方便数据的插入会把数组建立的大一些,不至于溢出。
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;
#difine MAXSIZE 1000
typedef struct{
ElemType data;
int cur; //游标,为0时表示无指向
}Component,StaticLinkList[MAXSIZE];
(3)静态链表的初始化
Status InitList(StaticLinkList space){ //space[0].cur为头指针
int i;
for(i=0;i<MAXSIZE-1;i++){
space[i].cur=i+1;
}
space[MAXSIZE-1].cur=0; //链表为空,最后一个元素的cur为0
return OK;
}
2.静态链表的插入操作
(1)插入操作:在动态链表中,我们使用malloc()和free()两个函数来实现节点的申请和释放,但在静态链表中,我们要自己实现这两个功能才能实现静态链表的插入和删除操作。在数组中我们为了分辨那些分量未被使用,解决的办法是将这些未被使用的或已删除的分量用游标链形成一个备用的链表,当插入时,取备用链上的第一个节点作为待插入的新节点。
int Malloc_SLL(StaticLinkList space){
int i=space[0].cur; //当前数组第一个元素的cur的值

静态链表是一种使用数组替代指针的数据结构,由数据域和游标组成。在插入和删除操作中,静态链表只需修改游标,避免了元素移动。然而,它并未解决表长不确定和失去随机存储特性的缺点。
最低0.47元/天 解锁文章
751

被折叠的 条评论
为什么被折叠?



