静态链表实现

1,有些高级语言中没有“指针”数据类型,只能用数组来模拟线性链表的结构,数组元素中的指针“域”存放的不是元素在内存中的真实地址,而是在数组中的位置。这样的链表
称为静态链表。

2,静态链表是用数组实现的,是顺序的存储结构,在物理地址上是连续的,而且需要预先分配大小。动态链表是用申请内存函数(C是malloc,C++是new)动态申请内存的,所以在链表的长度上没有限制。动态链表因为是动态申请内存的,所以每个节点的物理地址不连续,要通过指针来顺序访问。静态链表在插入、删除时也是通过修改指针域来实现的,与动态链表没有什么分别(动态链表还需要删除内存)。

3,静态链表:把线性表的元素存放在数组的单元中(不一定按逻辑顺序连续存放),每个单元不仅存放元素本身 ,而且还要存放其后继元素所在的数组单元的下标(游标)。

线性表的静态单链表存储结构 :

#define MAXSIZE 100;

typedef struct{

  ElemType data;

  int cur;

}component,SLinkList[MAXSIZE];

4,静态链表在实现时,需要记录已存数据的头指针,我是在数组的第2个位子用来存放,数据域表示已存的数据个数,伪指针域用来存放头指针。另外还把数组第一个元素用来作为记录备用静态链表的头结点,数据域不存,伪指针域存放未用空间的头指针。

具体代码如下:

这是用来定义结构体数组

#include "stdafx.h"
#include<iostream>
using namespace std;
#include<ctype h="">
//#include <stdio h="">
#include<time h="">
#define Max 20//#define 语句不是执行语句,后边不用加分号
typedef struct
{
	char data;
	int cur;
}node[Max];
// node a;


接下来是主要代码:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值