线性表——静态链表

前言:

  其实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];<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值