c语言单链表的插入和删除
时间: 2023-08-30 16:06:24 浏览: 56
单链表的插入和删除都需要考虑节点的指针变化,下面是C语言单链表的插入和删除示例代码:
单链表结构体定义:
```
typedef struct ListNode {
int data;
struct ListNode *next;
} ListNode;
```
插入节点的函数:
```
void insertNode(ListNode **head, int val) {
ListNode *newNode = (ListNode *)malloc(sizeof(ListNode));
newNode->data = val;
newNode->next = NULL;
if (*head == NULL) {
*head = newNode;
} else {
ListNode *curr = *head;
while (curr->next != NULL) {
curr = curr->next;
}
curr->next = newNode;
}
}
```
删除节点的函数:
```
void deleteNode(ListNode **head, int val) {
ListNode *prev = NULL, *curr = *head;
while (curr != NULL && curr->data != val) {
prev = curr;
curr = curr->next;
}
if (curr == NULL) {
return;
}
if (prev == NULL) {
*head = curr->next;
} else {
prev->next = curr->next;
}
free(curr);
}
```
在插入和删除节点时,需要注意边界条件,例如插入节点时,如果链表为空,需要直接将头节点指向新节点。删除节点时,需要考虑要删除的节点是否是头节点。