C语言线性表之循环链表
作者:野牛程序员:2023-08-23 11:43:40C语言阅读 2766
循环链表是一种特殊形式的链表,它的最后一个节点指向链表的第一个节点,形成一个闭环。在 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语言线性表之双链表
