6-1 单链表基本操作--插入,本题实现单链表的初始化,插入、访问等基本操作。要求实现 ListInsert函数和DispListN函数全部代码
时间: 2024-09-14 18:10:05 浏览: 39
在C语言中,实现单链表的基本操作通常包括创建链表节点、插入节点和遍历链表。这里是一个简单的单链表结构体以及两个基本函数的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构
typedef struct ListNode {
int data; // 数据域
struct ListNode* next; // 指针域,指向下一个节点
} ListNode;
// 初始化链表为空
ListNode* CreateList() {
return (ListNode*)malloc(sizeof(ListNode)); // 分配内存并返回头结点指针
}
// 插入元素到链表头部
void ListInsert(ListNode** head, int value) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode)); // 新建节点
newNode->data = value;
newNode->next = *head; // 将新节点链接到当前头结点之后
*head = newNode; // 更新头结点
}
// 访问第n个节点的数据
int AccessNode(ListNode* head, int n) {
if (n <= 0) {
printf("Invalid index.\n");
return -1; // 如果索引无效,返回错误码
}
ListNode* current = head;
for (int i = 1; i < n && current != NULL; ++i) {
current = current->next;
}
if (current == NULL) {
printf("Index out of range.\n");
return -1;
} else {
return current->data; // 返回第n个节点的数据
}
}
// 打印链表所有元素
void DispListN(ListNode* head) {
ListNode* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
int main() {
ListNode* listHead = CreateList();
ListInsert(&listHead, 5); // 插入5
ListInsert(&listHead, 3); // 插入3
ListInsert(&listHead, 7); // 插入7
DispListN(listHead); // 输出 [7, 3, 5]
return 0;
}
```
阅读全文