目录
前言
这篇博客主要介绍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 指针指向自身表示链表为空
}