完成双向循环链表的销毁链表代码
时间: 2024-03-13 08:14:49 浏览: 64
当然可以!这是一个双向循环链表的销毁链表的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node* prev;
struct Node* next;
} Node;
void destroyList(Node** head) {
if (*head == NULL) {
return;
}
Node* current = *head;
Node* next = (*head)->next;
while (next != *head) {
free(current);
current = next;
next = next->next;
}
free(current);
*head = NULL;
}
int main() {
// 创建双向循环链表
Node* head = (Node*)malloc(sizeof(Node));
Node* second = (Node*)malloc(sizeof(Node));
Node* third = (Node*)malloc(sizeof(Node));
head->data = 1;
head->prev = third;
head->next = second;
second->data = 2;
second->prev = head;
second->next = third;
third->data = 3;
third->prev = second;
third->next = head;
// 销毁链表
destroyList(&head);
return 0;
}
```
在这个示例中,我们定义了一个 `Node` 结构来表示链表中的每个节点。`destroyList` 函数用于销毁整个链表,它接受一个指向头节点指针的指针作为参数。在函数中,我们使用循环遍历链表,并释放每个节点的内存,最后将头节点指针置为 `NULL`。
请注意,这只是一个简单的示例代码,你可以根据自己的需求进行适当的修改。希望能对你有所帮助!如果还有其他问题,请随时提问。
阅读全文