给我一个单链表薄板程序
时间: 2024-03-14 18:45:25 浏览: 23
好的,以下是一个简单的单链表薄板程序,包括链表节点的定义、创建、插入和删除等操作:
```c
#include <stdio.h>
#include <stdlib.h>
// 链表节点定义
typedef struct ListNode {
int val;
struct ListNode* next;
} ListNode;
// 创建链表节点
ListNode* createListNode(int val) {
ListNode* node = (ListNode*)malloc(sizeof(ListNode));
node->val = val;
node->next = NULL;
return node;
}
// 插入节点到链表头部
void insertListNode(ListNode** head, int val) {
ListNode* node = createListNode(val);
node->next = *head;
*head = node;
}
// 删除链表中指定值的节点
void deleteListNode(ListNode** head, int val) {
ListNode* dummy = createListNode(0);
dummy->next = *head;
ListNode* prev = dummy;
ListNode* curr = *head;
while (curr) {
if (curr->val == val) {
prev->next = curr->next;
free(curr);
curr = prev->next;
} else {
prev = curr;
curr = curr->next;
}
}
*head = dummy->next;
free(dummy);
}
// 打印链表
void printList(ListNode* head) {
ListNode* curr = head;
while (curr) {
printf("%d ", curr->val);
curr = curr->next;
}
printf("\n");
}
// 主函数
int main() {
ListNode* head = NULL;
insertListNode(&head, 1);
insertListNode(&head, 2);
insertListNode(&head, 3);
insertListNode(&head, 4);
insertListNode(&head, 5);
printList(head);
deleteListNode(&head, 3);
printList(head);
return 0;
}
```
以上程序实现了一个简单的单链表,并演示了链表节点的创建、插入和删除等基本操作。