把这些整合成一个整体
时间: 2024-11-05 08:30:51 浏览: 9
将上述关于单链表的创建、插入和删除操作整合成一个整体的话,你可以编写一个简单的链表管理函数库,包括初始化链表、插入节点、删除节点以及链表操作相关的辅助函数。下面是一个简化版本的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义结构体student
typedef struct student {
char name[50];
int age;
struct student* next;
} Student;
// 初始化空链表
Student* createList() {
return (Student*)malloc(sizeof(Student));
}
// 插入节点到链表头部
void insertAtHead(Student** list, const char* name, int age) {
Student* newNode = (Student*)malloc(sizeof(Student));
newNode->name = name;
newNode->age = age;
newNode->next = *list;
*list = newNode;
}
// 在给定位置插入节点
void insertAtPosition(Student** list, const char* name, int age, int index) {
// ... 实现遍历和插入代码 ...
}
// 删除节点(根据名称)
void deleteNodeByName(Student** list, const char* name) {
Student* temp = *list;
Student* prev = NULL;
while (temp != NULL && strcmp(temp->name, name) != 0) {
prev = temp;
temp = temp->next;
}
if (temp != NULL) {
if (prev != NULL) {
prev->next = temp->next;
} else {
*list = temp->next;
}
free(temp);
}
}
// 遍历链表并打印节点信息
void printList(Student* list) {
while (list != NULL) {
printf("Name: %s, Age: %d\n", list->name, list->age);
list = list->next;
}
}
int main() {
// 初始化链表
Student* list = createList();
// 插入节点
insertAtHead(&list, "张三", 20);
insertAtPosition(&list, "李四", 22, 0);
// 打印链表
printList(list);
// 删除节点
deleteNodeByName(&list, "李四");
// 再次打印链表
printList(list);
// 清理内存
deleteNodeByName(&list, "张三");
free(list);
return 0;
}
```
这个例子展示了如何集成链表的创建、插入、删除和基本的遍历功能。在实际应用中,你需要根据需求对这些函数进行调整和完善。
阅读全文