定义main函致,调用给出的建立,输出,插入,刷除等函效。验证单链表C语言完成
时间: 2024-03-23 07:41:33 浏览: 18
好的,以下是一个简单的单链表的C语言实现,包含建立、输出、插入、删除等基本操作:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点
typedef struct ListNode {
int val;
struct ListNode* next;
} ListNode;
// 建立链表
ListNode* createList(int arr[], int n) {
ListNode* head = NULL;
ListNode* tail = NULL;
for (int i = 0; i < n; i++) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->val = arr[i];
newNode->next = NULL;
if (head == NULL) {
head = newNode;
tail = newNode;
} else {
tail->next = newNode;
tail = newNode;
}
}
return head;
}
// 输出链表
void printList(ListNode* head) {
while (head != NULL) {
printf("%d ", head->val);
head = head->next;
}
printf("\n");
}
// 插入节点
ListNode* insertNode(ListNode* head, int val) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->val = val;
newNode->next = NULL;
if (head == NULL) {
head = newNode;
} else {
newNode->next = head;
head = newNode;
}
return head;
}
// 删除节点
ListNode* deleteNode(ListNode* head, int val) {
if (head == NULL) {
return NULL;
}
if (head->val == val) {
ListNode* temp = head;
head = head->next;
free(temp);
} else {
ListNode* prev = head;
ListNode* curr = head->next;
while (curr != NULL) {
if (curr->val == val) {
prev->next = curr->next;
free(curr);
break;
}
prev = curr;
curr = curr->next;
}
}
return head;
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(int);
ListNode* head = createList(arr, n);
printf("原始链表:");
printList(head);
head = insertNode(head, 0);
printf("插入节点后:");
printList(head);
head = deleteNode(head, 3);
printf("删除节点后:");
printList(head);
return 0;
}
```
这段代码中,我们首先定义了一个`ListNode`结构体,来表示链表的每个节点。然后实现了建立链表、输出链表、插入节点、删除节点等基本操作。最后在`main`函数中,我们先创建了一个原始链表,然后分别调用`insertNode`和`deleteNode`函数,演示了如何插入和删除节点。