用链表存储学生信息,每增加一个学生就动态分配一个内存空间。录入两名学生信息后,删除其中一人信息,并释放空间(用c语言实现)
时间: 2023-06-25 09:02:43 浏览: 43
以下是用链表存储学生信息并动态分配内存空间的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
typedef struct student {
char name[20];
int age;
char gender[10];
struct student *next;
} Student;
// 函数声明
Student *createStudent(); // 创建学生信息
void addStudent(Student *head); // 添加学生信息
void deleteStudent(Student *head); // 删除学生信息
void printStudent(Student *head); // 打印学生信息
int main() {
// 创建头结点
Student *head = createStudent();
head->next = NULL;
// 添加两个学生信息
printf("添加第1个学生信息:\n");
addStudent(head);
printf("添加第2个学生信息:\n");
addStudent(head);
// 打印学生信息
printf("打印所有学生信息:\n");
printStudent(head);
// 删除一个学生信息
printf("删除第1个学生信息:\n");
deleteStudent(head);
// 打印学生信息
printf("打印所有学生信息:\n");
printStudent(head);
return 0;
}
// 创建学生信息
Student *createStudent() {
Student *p = (Student*)malloc(sizeof(Student));
if (p == NULL) {
printf("内存分配失败!\n");
exit(1);
}
return p;
}
// 添加学生信息
void addStudent(Student *head) {
Student *p = createStudent();
printf("请输入学生姓名:");
scanf("%s", p->name);
printf("请输入学生年龄:");
scanf("%d", &p->age);
printf("请输入学生性别:");
scanf("%s", p->gender);
// 将新节点插入链表末尾
p->next = NULL;
Student *temp = head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = p;
}
// 删除学生信息
void deleteStudent(Student *head) {
char name[20];
printf("请输入要删除的学生姓名:");
scanf("%s", name);
// 查找要删除的节点
Student *prev = head;
Student *curr = head->next;
while (curr != NULL && strcmp(curr->name, name) != 0) {
prev = curr;
curr = curr->next;
}
// 找到要删除的节点并删除
if (curr != NULL) {
prev->next = curr->next;
free(curr);
printf("删除成功!\n");
} else {
printf("未找到该学生信息!\n");
}
}
// 打印学生信息
void printStudent(Student *head) {
Student *p = head->next;
while (p != NULL) {
printf("姓名:%s,年龄:%d,性别:%s\n", p->name, p->age, p->gender);
p = p->next;
}
}
```
其中,createStudent() 函数用于创建一个学生结构体的内存空间,addStudent() 函数用于添加一个新的学生信息,deleteStudent() 函数用于删除一个指定姓名的学生信息,printStudent() 函数用于打印所有学生信息。
在删除学生信息时,要先查找要删除的节点,然后将该节点从链表中删除,并释放内存空间。
注意,链表的头结点不存储实际的学生信息,它只是一个空节点,便于遍历整个链表。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)