静态链表知多少

静态链表是使用数组模拟链表结构的一种方法,通过数据域和游标实现链表的功能。在静态链表中,插入和删除操作只需修改游标,避免了元素移动。文章介绍了静态链表的初始化、插入、删除操作,并讨论了其优缺点。
摘要由CSDN通过智能技术生成

静态链表

对于一些语言,如Basic、Fortran等早期的编程高级语言,由于没有指针,链表结构按照其他高级语言指针的讲法,它就没法实现了。怎么办呢?

有人就想出来用数组代替指针,来描述单链表。

首先我们让数组的元素都是由两个数据域组成,data和cur。也就是说,数组的每个下标都对应一个data和一个cur。数据域data,用来存放数据元素,也就是通常我们要处理的数据,而cur相当于单链表的next指针,存放该元素的后继在数组中的下标,我们把cur叫做游标。

我们把这种用数组描述的链表叫做静态链表,这种描述方法还有起名叫做游标实现法

为了我们方便插入数据,我们通常会把数组建立得大一些,以便有一些空闲空间可以便于插入时不至于溢出。

/*线性表的静态链表存储结构*/
#define MAXSIZE 1000	/*线性表的最大长度是1000*/
typedef struct {
   
    ElemType data;
    int cur;	/*游标(cursor):为0时表示无指向*/
}Component,StaticLinkList[MAXSIZE];

另外我们对数组第一个和最后一个元素作为特殊元素处理,不存数据。我们通常把未被使用的数组元素称为备用链表。而数组的第一个元素,即下标为0的元素的cur就存放备用链表的第一个结点的下标;而数组的最后一个元素的cur则方寸第一个有数值的元素的下标,相当于单链表中的头结点作用。

初始化静态链表代码:

/*将一维数组space中各分量链成一备用链表*/
/*space[0].cur为头指针,"0"表示空指针*/
Status InitList(StaticLinkList space) {
   
    int i;
    for(i<0;i<MAXSIZE-1;I++)
        space[i].cur = i+1;
    space[MAXSIZE-1].cur = 0;	/*目前静态链表为空,最后一个元素的cur为0*/
    return OK;
}

静态链表的插入操作

静态链表中要解决的是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值