数据结构与算法学习笔记五---循环链表的表示和实现(C语言)

目录

前言

1.循环链表的表示和实现

1.初始化

2. 销毁

3. 清空

4. 表空判断

5. 表长

6. 获取循环链表中的元素

7. 直接前驱

8. 直接后继

9. 插入

10. 删除

11. 遍历

12. 测试代码 


前言

    这篇博客主要介绍C语言中循环链表的表示和实现。

1.循环链表的表示和实现

        指针是C语言中的一种重要概念,它存储了一个变量的内存地址。通过指针,可以直接访问内存中的数据,实现对数据的直接操作。

1.初始化

        指针的声明告诉编译器变量将存储一个地址。在声明指针时,需要指定指针所指向变量的类型。

        例如在下面的例子中我们声明了一个指向整数的指针变量。

int * ptr;

2. 销毁

// 循环链表销毁
void destroyCircularLinkedList(CircularLinkedList *circularLinkedList) {
    if (*circularLinkedList) {
        CircularLinkedList current = (*circularLinkedList)->next;
        while (current != *circularLinkedList) {
            CircularLinkedList temp = current;
            current = current->next;
            free(temp);
        }
        free(*circularLinkedList);
        *circularLinkedList = NULL;
    }
}

3. 清空

// 循环链表清空
void clearCircularLinkedList(CircularLinkedList *circularLinkedList) {
    if (!circularLinkedList) {
        return; // 链表为空,无需清空
    }
    CircularLinkedList current = (*circularLinkedList)->next; // 从第一个节点开始
    while (current != *circularLinkedList) { // 遍历至头节点
        CircularLinkedList temp = current; // 暂存当前节点
        current = current->next; // 移动到下一个节点
        free(temp); // 释放当前节点内存
    }
    (*circularLinkedList)->next = *circularLinkedList; // 头节点的 next 指针指向自身,链表置为空链表
}

4. 表空判断

// 循环链表是否为空
Status isCircularLinkedListEmpty(CircularLinkedList *circularLinkedList) {
    return (*circularLinkedList)->next == *circularLinkedList ? 1 : 0; // 头节点的 next 指针指向自身表示链表为空
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我叫柱子哥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值