c语言实现实现双向链表删除一个节点 P,在节点 P 后插入一个节点,写出这两个函数。
时间: 2023-05-23 12:01:22 浏览: 113
以下是实现双向链表删除一个节点 P的 C 代码:
```
typedef struct Node{
int data;
struct Node *prev, *next;
}Node;
void DeleteNode(Node* P){
if(P == NULL) return;
if(P->prev == NULL){
P->next->prev = NULL;
head = P->next;
}
else if(P->next == NULL){
P->prev->next = NULL;
}
else{
P->prev->next = P->next;
P->next->prev = P->prev;
}
free(P);
}
```
以下是在节点 P 后插入一个节点的 C 代码:
```
void InsertNode(Node* P, int x){
if(P == NULL) return;
Node* newNode = (Node*)malloc(sizeof(Node));
if(newNode == NULL){
printf("Memory allocation failed\n");
return;
}
newNode->data = x;
newNode->prev = P;
newNode->next = P->next;
P->next = newNode;
if(P->next != NULL){
P->next->prev = newNode;
}
}
```
阅读全文