循环链表

链表的一种特殊形式,最后一个结点的指针域指向头结点,整个链表形成一个环

由于其实现与链表相差不大,此仅给出循环链表定义,具体实现推荐去作者GitHub页面查看

(下面代码只是最初实现,后续如果有修改,由于太麻烦,不会再更改下文,仅仅更新Github上的代码文件)

class CircularList {
public:
    CircularList();
    CircularList(int len);
    ~CircularList();

    LNode *CircularListHead() {
        return head;
    }

    LNode *CListHead() {
        return head;
    }

    // 获取链表长度
    int CListLength();

    // 判断链表是否为空
    bool CListEmpty();

    // 返回链表中第pos个结点
    bool GetNode(int pos, LNode **node);

    // 返回指定data在链表中第一次出现的位置
    bool LocateNode(ElemType ele, LNode **node);

    // 在指定位置插入后一个结点,但若pos为0是表示在链表头插入一个结点
    bool CListInsert(int pos, LNode *node);

    // 删除指定位置结点
    bool CListDelete(int pos);

    // 删除指定位置结点并返回被删除结点的信息
    bool CListDelete(int pos, LNode *node);

    // 遍历线性表
    void CListTraverse();

    // 在链表尾添加cnt个结点
    bool CListAddNodes(int cnt);

    // 销毁链表,释放所有结点资源
    void CListDestory();

private:
    LNode *head;    // 循环链表头结点,不储存数据,逻辑上不属于链表的结点,当head->next == head时为空循环链表
};

 

转载于:https://www.cnblogs.com/lnlin/p/10846730.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值