带头结点单链表删除x的c语言实现
时间: 2023-08-31 09:09:21 浏览: 98
带头结点的单链表的c算法实现
以下是使用 C 语言实现删除带头结点单链表中元素 x 的代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构
struct ListNode {
int val;
struct ListNode* next;
};
// 创建一个新节点
struct ListNode* createNode(int value) {
struct ListNode* newNode = (struct ListNode*)malloc(sizeof(struct ListNode));
newNode->val = value;
newNode->next = NULL;
return newNode;
}
// 删除元素 x
void deleteNode(struct ListNode* head, int x) {
struct ListNode* pre = head;
struct ListNode* current = head->next;
while (current != NULL) {
if (current->val == x) {
pre->next = current->next;
free(current);
current = pre->next;
} else {
pre = current;
current = current->next;
}
}
}
// 打印链表
void printList(struct ListNode* head) {
struct ListNode* current = head->next;
while (current != NULL) {
printf("%d ", current->val);
current = current->next;
}
printf("\n");
}
int main() {
// 创建头结点
struct ListNode* head = createNode(0);
// 添加节点
head->next = createNode(1);
head->next->next = createNode(2);
head->next->next->next = createNode(3);
int x = 2; // 要删除的元素
// 删除操作
deleteNode(head, x);
// 打印删除操作后的链表
printList(head);
return 0;
}
```
以上代码会输出删除元素 2 后的链表:0 -> 1 -> 3。
阅读全文