用数组作为静态链表,一段不可改变的连续的空间,使用很少。
#include
#define MaxSize 10
using namespace std;
typedef struct{ //第一种定义方式
int data;
int next;
}SLinkList[MaxSize];
struct DNode { //第二种定义方式
int data;
int next;
};
typedef DNode SLinkList[MaxSize];
初始化时把头结点的next设为-1(-1相当于NULL的作用,可以自定义数字),其他结点的next设为-2(用-2来代表结点是空闲的,方便后续操作)
查找:只需遍历一遍即可
在第i个位置插入:
1.找到一个空闲结点,存入数据元素
2.从头结点出发找到位序为i-1的结点(a(a为数组元素的起始地址)+[sizeof(ElemType) + 4] * next)
3.修改新结点的next
4.修改i-1结点的next
删除某个结点:
1.从头结点出发找到前驱结点
2.修改前驱结点的next值
3.被删除的结点next设为-2