循环链表:

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

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

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
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时为空循环链表
};

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄