如何实现链表的插入和删除操作?
时间: 2024-06-14 18:06:01 浏览: 10
链表的插入和删除操作可以通过修改指针的指向来实现。下面是链表的插入和删除操作的示例代码:
1. 链表的插入操作:
```c
// 在链表的指定位置插入一个新节点
void insertNode(DLNodePtr paraHeader, char paraChar, char paraData) {
DLNodePtr p, q;
p = paraHeader;
// 找到要插入位置的前一个节点
while (p->next != NULL && p->next->data != paraChar) {
p = p->next;
}
// 创建新节点
q = (DLNodePtr)malloc(sizeof(DLNode));
q->data = paraData;
// 插入新节点
q->next = p->next;
q->previous = p; if (p->next != NULL) {
p->next->previous = q;
}
p->next = q;
}
```
2. 链表的删除操作:
```c
// 删除链表中指定节点
void deleteNode(DLNodePtr paraHeader, char paraChar) {
DLNodePtr p, q;
p = paraHeader;
// 找到要删除节点的前一个节点
while (p->next != NULL && p->next->data != paraChar) {
p = p->next;
}
// 判断节点是否存在
if (p->next == NULL) {
printf("'%c'字符不存在\n", paraChar);
return;
}
// 删除节点
q = p->next;
p->next = q->next;
if (q->next != NULL) {
q->next->previous = p;
}
free(q);
}
```
相关推荐
![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_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_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)