C语言线性表之循环链表
作者:野牛程序员:2023-08-23 11:43:40C语言阅读 2589
循环链表是一种特殊形式的链表,它的最后一个节点指向链表的第一个节点,形成一个闭环。在 C 语言中,可以通过指针来实现循环链表。以下是一个简单的循环链表的示例代码:
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> // 定义循环链表节点 typedef struct Node { int data; struct Node *next; } Node; // 创建循环链表 Node* createCircularLinkedList(int n) { if (n <= 0) { return NULL; } Node *head = NULL; Node *prev = NULL; for (int i = 1; i <= n; i++) { Node *newNode = (Node *)malloc(sizeof(Node)); newNode->data = i; if (head == NULL) { head = newNode; } else { prev->next = newNode; } newNode->next = head; prev = newNode; } return head; } // 打印循环链表 void printCircularLinkedList(Node *head) { if (head == NULL) { printf("循环链表为空\\n"); return; } Node *current = head; do { printf("%d ", current->data); current = current->next; } while (current != head); printf("\\n"); } // 销毁循环链表 void destroyCircularLinkedList(Node *head) { if (head == NULL) { return; } Node *current = head; Node *next; do { next = current->next; free(current); current = next; } while (current != head); } int main() { int n; printf("请输入循环链表的大小:"); scanf("%d", &n); Node *head = createCircularLinkedList(n); printf("循环链表内容:"); printCircularLinkedList(head); destroyCircularLinkedList(head); return 0; }
在这段代码中,Node
结构表示循环链表的节点。createCircularLinkedList
函数用于创建循环链表,printCircularLinkedList
函数用于打印循环链表的内容,destroyCircularLinkedList
函数用于销毁循环链表。需要注意的是,循环链表的操作需要特别小心,以避免陷入死循环或内存泄漏。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:C语言链栈
- 下一篇:C语言线性表之双链表