用链表存储学生信息,每增加一个学生就动态分配一个内存空间。录入两名学生信息后,删除其中一人信息,并释放空间。
时间: 2023-06-25 20:02:52 浏览: 58
好的,以下是一个简单的C++代码实现:
```c++
#include <iostream>
#include <cstring>
using namespace std;
struct Student {
char name[20];
int age;
float score;
Student *next;
};
void addStudent(Student *&head) {
Student *p = new Student;
cout << "请输入学生姓名:";
cin >> p->name;
cout << "请输入学生年龄:";
cin >> p->age;
cout << "请输入学生成绩:";
cin >> p->score;
p->next = head;
head = p;
}
void deleteStudent(Student *&head, char *name) {
Student *p = head, *q = NULL;
while (p != NULL && strcmp(p->name, name) != 0) {
q = p;
p = p->next;
}
if (p == NULL) {
cout << "未找到该学生信息!" << endl;
return;
}
if (q != NULL) {
q->next = p->next;
} else {
head = p->next;
}
delete p;
cout << "删除成功!" << endl;
}
void printStudent(Student *head) {
Student *p = head;
cout << "姓名\t年龄\t成绩" << endl;
while (p != NULL) {
cout << p->name << "\t" << p->age << "\t" << p->score << endl;
p = p->next;
}
}
int main() {
Student *head = NULL;
addStudent(head);
addStudent(head);
printStudent(head);
char name[20];
cout << "请输入要删除的学生姓名:";
cin >> name;
deleteStudent(head, name);
printStudent(head);
return 0;
}
```
在这个程序中,我们定义了一个名为`Student`的结构体,其中包含了学生的姓名、年龄、成绩以及一个指向下一个学生的指针。接着,我们定义了三个函数,分别是添加学生信息、删除学生信息和输出所有学生信息。在主函数中,我们先添加两个学生信息,然后输出所有学生信息,接着删除一个学生信息并再次输出所有学生信息。
关于动态内存分配和释放,可以通过`new`和`delete`操作符来完成。在添加学生信息的函数中,我们使用`new`操作符为新学生分配内存空间,而在删除学生信息的函数中,我们使用`delete`操作符来释放被删除学生的内存空间。
阅读全文