帮我用c语言实现双链表的插入和删除
时间: 2024-06-10 21:08:25 浏览: 18
好的,我可以为您提供双链表的插入和删除的C语言代码示例:
双链表结构体定义如下:
```c
typedef struct DoubleLinkedListNode {
int data;
struct DoubleLinkedListNode *prev;
struct DoubleLinkedListNode *next;
} Node, *PNode;
```
双链表的插入和删除代码示例:
```c
// 双链表的插入操作,可以在任意位置插入元素
PNode InsertNode(PNode pHead, PNode pInsert, int data) {
if (!pHead || !pInsert) {
printf("Invalid parameters!\n");
return pHead;
}
PNode pCur = pHead;
while (pCur) {
if (pCur == pInsert) { // 找到插入位置
PNode pNewNode = (PNode)malloc(sizeof(Node));
pNewNode->data = data;
pNewNode->prev = pInsert->prev;
pNewNode->next = pInsert;
if (pInsert->prev) { // 如果插入位置不是第一个节点
pInsert->prev->next = pNewNode;
}
pInsert->prev = pNewNode;
if (pInsert == pHead) { // 如果插入位置是第一个节点
pHead = pNewNode;
}
break;
}
pCur = pCur->next;
}
return pHead;
}
// 双链表的删除操作,可以删除任意位置的元素
PNode DeleteNode(PNode pHead, PNode pDelete) {
if (!pHead || !pDelete) {
printf("Invalid parameters!\n");
return pHead;
}
if (pDelete == pHead) { // 如果要删除的节点是第一个节点
pHead = pDelete->next;
}
if (pDelete->next) { // 如果要删除的节点不是最后一个节点
pDelete->next->prev = pDelete->prev;
}
if (pDelete->prev) { // 如果要删除的节点不是第一个节点
pDelete->prev->next = pDelete->next;
}
free(pDelete);
return pHead;
}
```
希望这个代码示例能够帮助您实现双链表的插入和删除操作。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)