前言:
其实C语言真是好东西,它具有一定的指针能力,这使得我们能够非常容易地操作内存中的地址和数据,这比其它的高级语言更加的灵活方便,后来面向对象的语言,例如Java,C#等,虽然他们不使用指针,但是因为是启用了对象引用机制,从某种角度来讲也间接实现了指针的某些作用,但是如Basic ,Fortran等早期的编程高级语言,由于没有指针,链表结构按照我们前面的做法,就没有办法实现了。那么怎么办呢?
有人脑洞大开,既然我们没有指针,那么我们可以避其短处,我们采用数组来代替指针来描述单链表,真实不得不佩服他们的智慧,我们来看看他们是怎么做到的。
解决思路:
首先为什么叫他静态链表呢?顾名思义——他肯定不是通过malloc或者new来申请堆空间,更何况堆空间的申请需要指针的帮助,所以呢我们这里还是通过数组来解决:每个数组元素的内容都包括两部分,①data存放数据②cur存放下一个数据的数组下标(相当于*next)。我们把这种通过数组描述的链表叫做静态链表(也称为:游标实现法)。
通常情况下我们为了方便插入数据,我们通常会把数组建立的大一些,以便有闲暇空间可以存储,不至于溢出。
/*线性表的静态链表储存结构*/
#define MAXSIZE 100
typedef int Elemtype;
typedef struct
{
Elemtype data;
int cur;
}Component,StaticLinkList[MAXSIZE];<