数据结构单链表四个操作代码
时间: 2023-10-23 19:25:29 浏览: 87
单链表是一种常见的数据结构,它由多个节点组成,每个节点都包含了一个数据元素和指向下一个节点的指针。单链表常用的四个操作包括:创建链表、插入节点、删除节点和遍历链表。以下是使用 C 语言实现单链表的四个操作的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义单链表节点的结构体
typedef struct ListNode {
int val; // 节点存储的数据
struct ListNode* next; // 指向下一个节点的指针
} ListNode;
// 创建一个新的节点
ListNode* createNode(int val) {
ListNode* node = (ListNode*)malloc(sizeof(ListNode));
node->val = val;
node->next = NULL;
return node;
}
// 创建一个单链表并返回头节点
ListNode* createList(int* arr, int n) {
if (n == 0) return NULL;
ListNode* head = createNode(arr[0]);
ListNode* p = head;
for (int i = 1; i < n; i++) {
p->next = createNode(arr[i]);
p = p->next;
}
return head;
}
// 在单链表的指定位置插入一个新节点
void insertNode(ListNode* head, int pos, int val) {
ListNode* node = createNode(val);
// 找到要插入位置的前一个节点
ListNode* p = head;
for (int i = 0; i < pos - 1; i++) {
p = p->next;
}
// 插入新节点
node->next = p->next;
p->next = node;
}
// 在单链表中删除指定位置的节点
void deleteNode(ListNode* head, int pos) {
// 找到要删除节点的前一个节点
ListNode* p = head;
for (int i = 0; i < pos - 1; i++) {
p = p->next;
}
// 删除节点
ListNode* node = p->next;
p->next = node->next;
free(node);
}
// 遍历单链表
void traverseList(ListNode* head) {
ListNode* p = head;
while (p) {
printf("%d ", p->val);
p = p->next;
}
printf("\n");
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(int);
ListNode* head = createList(arr, n);
traverseList(head);
insertNode(head, 2, 6);
traverseList(head);
deleteNode(head, 3);
traverseList(head);
return 0;
}
```
阅读全文