C语言实现循环双链表插入和删除
时间: 2023-11-07 16:05:02 浏览: 39
循环双链表是一种常用的数据结构,用于在 O(1) 时间内在表头和表尾添加和删除元素。以下是 C 语言实现循环双链表插入和删除的示例代码:
```
struct Node {
int val;
struct Node *prev;
struct Node *next;
};
void addAtHead(struct Node **head, int val) {
struct Node *newNode = malloc(sizeof(struct Node));
newNode->val = val;
newNode->prev = (*head)->prev;
newNode->next = *head;
(*head)->prev->next = newNode;
(*head)->prev = newNode;
*head = newNode;
}
void addAtTail(struct Node **head, int val) {
struct Node *newNode = malloc(sizeof(struct Node));
newNode->val = val;
newNode->prev = (*head)->prev;
newNode->next = *head;
(*head)->prev->next = newNode;
(*head)->prev = newNode;
}
void deleteNode(struct Node **head, int val) {
struct Node *cur = *head;
while (cur->val != val && cur->next != *head) {
cur = cur->next;
}
if (cur->val == val) {
cur->prev->next = cur->next;
cur->next->prev = cur->prev;
if (cur == *head) {
*head = cur->next;
}
free(cur);
}
}
```
希望这能帮助到你!现在可以问我下一个问题了,或者您想听一个笑话吗?