用C语言代码实现双向链表的插入和删除
时间: 2023-11-06 12:04:42 浏览: 90
双向链表是一种链式数据结构,它的每个节点都包含两个指针,一个指向前一个节点,另一个指向后一个节点。下面是用C语言代码实现双向链表的插入和删除:
定义双向链表节点结构体:
```c
typedef struct node {
int data;
struct node* prev;
struct node* next;
} Node;
```
插入节点:
```c
void insert(Node** head_ref, int new_data) {
Node* new_node = (Node*)malloc(sizeof(Node));
new_node->data = new_data;
new_node->prev = NULL;
new_node->next = (*head_ref);
if ((*head_ref) != NULL)
(*head_ref)->prev = new_node;
(*head_ref) = new_node;
}
```
删除节点:
```c
void delete(Node** head_ref, Node* del) {
if (*head_ref == NULL || del == NULL)
return;
if (*head_ref == del)
*head_ref = del->next;
if (del->next != NULL)
del->next->prev = del->prev;
if (del->prev != NULL)
del->prev->next = del->next;
free(del);
}
```
其中,`head_ref` 是指向头节点指针的指针,`new_data` 是新节点的数据,`del` 是要删除的节点。
阅读全文