C++STL链表循环链表
时间: 2023-11-06 07:08:39 浏览: 157
C语言中的标准模板库(STL)是C++的一部分,不适用于C语言。然而,你可以使用C语言来实现链表和循环链表。
在C语言中,你可以通过定义一个结构体来表示链表的节点,每个节点包含一个数据元素和一个指向下一个节点的指针。下面是一个简单的例子:
```c
struct ListNode {
int data;
struct ListNode* next;
};
```
要创建一个循环链表,你需要确保最后一个节点的指针指向第一个节点。这样,遍历链表时就可以通过检查指针是否指向第一个节点来判断是否到达链表的末尾。
下面是一个简单的循环链表的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct ListNode {
int data;
struct ListNode* next;
};
void printList(struct ListNode* head) {
struct ListNode* current = head;
if (head == NULL) {
printf("List is empty.\n");
return;
}
do {
printf("%d ", current->data);
current = current->next;
} while (current != head);
printf("\n");
}
int main() {
struct ListNode* head = NULL;
struct ListNode* second = NULL;
struct ListNode* third = NULL;
// 创建三个节点
head = (struct ListNode*)malloc(sizeof(struct ListNode));
second = (struct ListNode*)malloc(sizeof(struct ListNode));
third = (struct ListNode*)malloc(sizeof(struct ListNode));
// 赋值数据
head->data = 1;
second->data = 2;
third->data = 3;
// 构建循环链表
head->next = second;
second->next = third;
third->next = head;
printList(head);
// 释放内存
free(head);
free(second);
free(third);
return 0;
}
```
这个示例代码创建了一个包含3个节点的循环链表,并打印出链表中的元素。注意在释放内存之前,需要对每个节点调用`free`函数进行释放。
希望这个例子对你有所帮助!
阅读全文