数据结构c++静态链表

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

猜你喜欢

转载自blog.csdn.net/qq_51344334/article/details/119763559