双向循环链表的插入代码C语言
时间: 2024-09-25 19:00:33 浏览: 40
双向循环链表是一种特殊的链表结构,其中每个节点除了指向下一个节点外,还包含指向前一个节点的引用。在C语言中,插入节点到双向循环链表通常需要考虑头结点和尾节点的情况。这里是一个简单的示例,展示如何在链表中插入一个新的节点:
```c
// 定义双向链表节点结构体
typedef struct Node {
int data; // 节点数据
struct Node* prev; // 指向前一个节点
struct Node* next; // 指向后一个节点
} Node;
// 插入新节点到双向循环链表
void insertInCircularList(Node** head, int value) {
// 如果链表为空,创建新节点作为头和尾
if (*head == NULL) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->prev = newNode;
newNode->next = newNode;
*head = newNode;
} else {
// 找到尾节点(即头节点的前一个节点)
Node* tail = (*head)->prev;
// 创建新节点并链接到尾部
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->prev = tail;
newNode->next = *head;
// 更新尾节点的next指针和头节点的prev指针
tail->next = newNode;
*head->prev = newNode;
}
}
```
在这个函数中,`head`是指向头节点的指针,`value`是要插入的数据。如果链表是空的,就直接创建一个新的头尾节点;否则,找到尾节点并将其next指针和新节点连接起来。
阅读全文