1.静态链表的结构
静态链表每个数组元素由两个域构成:data域存放数据元素,next域存放该元素的后继元素的所在的数组下标。定义如下:
template<typename DataType>
struct SNode
{
DataType data; //DataType表示不确定的数据类型
int next; //指针域
};
2.静态链表的实现
const int MaxSize=100; //确定数据的长度,根据实际情况定
template<typename DataType>
class StaList
{
public:
StaList(); //初始化链表
StaList(DataType a[],int n); //建立长度为n的数组链表
~StaList();
private:
SNode SList[MaxSize]; //静态链表数组
int first,avail; //游标,链表头指针和空闲头指针
};
静态链表的操作和单链表很相似,请参考之前的文章,接下来就说说静态链表的插入和删除操作
(1)静态链表的插入操作
新的结点插入结点p的后面
s=avail //利用空闲链的第一个节点
avail=SList[avail].next; //空闲链的头指针后移
SList[s],data=x;
Slist[s].next=SList[p].next; //将p的指针游标值给到s的下标
SList[p].next=s; //p的指针下一个改为s
(2)静态链表的删除操作
删除p结点后面的结点
q=SList[p].next; //暂时存储被删除结点
SList[p].next=SList[q].next //摘除结点
SList[q].next=avail; //将结点插入空闲链的前端
avail=q; //将空闲链的头指针指向q