数据结构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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱栗创

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值