什么事静态链表?我是个数据结构初学者,有点不理解。请各位帮忙解释一下,希望能有例子。

什么事静态链表?我是个数据结构初学者,有点不理解。请各位帮忙解释一下,希望能有例子。,第1张

以前学习的各种链表都是由指针实现的,链表中结点的分配和回收(即释放)都是由系统提供的标准函数malloc和free动态实现的,故称之为动态链表。但是有的高级语言,如BASIC、FORTRAN等,没有提供”指针”这种数据类型,此时若想采用链表做存储结构,就必须使用”游标”来模拟指针,由程序员自己编写”分配结点”和”回收结点”的过程。

用游标实现链表,其方法是:定义一个较大的结构数组作为备用结点空间(即存储池)。当申请结点时,每个结点应含有两个域:data域和cursor域。data域用来存放结点的数据信息,需注意的是,此时的cursor域不在是指针而是游标指示器,游标指示器指示其后继结点在结构数组中的相对位置(即数组下标)。数组的第0个分量可以设计成表的头结点,头结点的next域指示了表中第一个结点的位置。表中当前最后一个结点的域为0,表示静态单链表的结束。我们把这种用游标指示器实现的单链表叫做静态单链表,static linked list。静态单链表同样可以借助一维数组来描述:

#define Maxsize = 链表可能达到的最大长度

typedef struct

{

ElemType data

int cursor

}Component, StaticList[Maxsize]

假如有如上的静态链表S中存储这线性表(a,b,c,d,e,f,g,h,i),Maxsize=11,如图所示,要在第四个元素后插入元素e,方法是:先在当前表尾加入一个元素e,即:S[9].data = e然后修改第四个元素的游标域,将e插入到链表中,即:S[9].cursor = S[4].cursorS[4].cursor = 9,接着,若要删除第8个元素h,则先顺着游标链通过计数找到第7个元素存储位置6,删除的具体做法是令S[6].cursor = S[7].cursor。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zzhangjiej/archive/2008/09/04/2880675.aspx

静态链表这种存储结构,仍需要预先分配一个较大的空间,但在作为线性表的插入和删除 *** 作时不需移动元素,仅需修改指针,故仍具有链式存储结构的主要优点。

假如有如上的静态链表S中存储着线性表(a,b,c,d,f,g,h,i),Maxsize=11,如图所示,要在第四个元素后插入元素e,方法是:先在当前表尾加入一个元素e,即:S[9].data = e;然后修改第四个元素的游标域,将e插入到链表中,即:S[9].cursor = S[4].cursor;S[4].cursor = 9,接着,若要删除第7个元素h,则先顺着游标链通过计数找到第7个元素存储位置6,删除的具体做法是令S[6].cursor = S[7].cursor。

扩展资料:

静态链表中,除了数据本身通过游标组成链表外,还需要有一条连接各个空闲位置的链表,称为备用链表。

作用:回收数组中未使用或者之前使用过(现在不用)的存储空间,留待后期使用。即静态链表使用数组申请的物理空间中,存在两个链表,一条连接数据,另一条连接数组中为使用的空间。

注:通常备用链表的表头位于数组下标为0(a[0])的位置,而数据链表的表头位于数组下标为1(a[1])的位置。

参考资料来源:

百度百科-静态链表

静态链表就是用数组来模拟链表,有些编程语言(如VB)没有指针,就可以用静态链表来模拟链表的 *** 作;静态链表结构体定义一般如下:

typedef struct{

ElemTypedata

int cursor

}Compoment,StaticList[MAXSIZE]

连链:从语句(space[k].cursor=k+1 /*连链*/)的注释就可以看出,指的是把各个结点按链表的形式链接起来,cursor相当于链表中的next指针。初始化时,头结点的指针(域)指向第一个结点,第一个结点指针(域)指向第二个结点,。。。依次类推;最后一个指针(域)为0,可以理解为空NULL。

程序段的注释比较清楚,第一个是初始化静态链表,第二个算法

int getnode(StaticList space, int *av)

/*从备用链表摘下一个结点空间,分配给待插入静态链表中的元素*/

{

int i

i=*av

*av=space[*av].cursor//修改备用链表头指针的值,以便下一次获取

return i

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7938367.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存