编写一单向动态链表储存学生信息(学号,姓名,成绩),并实现学员添加,删除、插入、信息查询等功能。(用子函数的形式实现。)
时间: 2023-03-05 15:55:55 浏览: 97
创建包含学号、姓名节点的单链表
好的,以下是使用C++语言编写单向动态链表储存学生信息并实现相关功能的代码示例:
```cpp
#include <iostream>
#include <string>
using namespace std;
struct student
{
string id; // 学号
string name; // 姓名
float score; // 成绩
student *next; // 指向下一个节点的指针
};
student *head = NULL; // 链表头指针,初始为空
// 学员添加
void add()
{
student *p = new student; // 新建一个节点
cout << "请输入学号:";
cin >> p->id;
cout << "请输入姓名:";
cin >> p->name;
cout << "请输入成绩:";
cin >> p->score;
p->next = NULL;
if (head == NULL) // 如果链表为空
{
head = p;
}
else // 如果链表非空
{
student *q = head;
while (q->next != NULL) // 找到链表末尾
{
q = q->next;
}
q->next = p; // 将新节点加入链表尾部
}
cout << "添加成功!" << endl;
}
// 学员删除
void remove()
{
string id;
cout << "请输入要删除的学号:";
cin >> id;
if (head == NULL) // 如果链表为空
{
cout << "链表为空,无法删除!" << endl;
}
else // 如果链表非空
{
student *p = head;
student *q = NULL;
while (p != NULL && p->id != id) // 找到要删除的节点
{
q = p;
p = p->next;
}
if (p == NULL) // 没有找到要删除的节点
{
cout << "没有找到要删除的学号!" << endl;
}
else // 找到了要删除的节点
{
if (q == NULL) // 要删除的节点是链表头
{
head = p->next;
}
else
{
q->next = p->next;
}
delete p;
cout << "删除成功!" << endl;
}
}
}
// 学员插入
void insert()
{
student *p = new student; // 新建一个节点
cout << "请输入学号:";
cin >> p->id;
cout << "请输入姓名:";
cin >> p->name;
cout << "请输入成绩:";
cin >> p->score;
p->next = NULL;
string id;
cout << "请输入要插入的位置的后继学号:";
cin >> id;
if (head == NULL) // 如果链表为空
{
head = p;
cout << "链表为空,已将新节点作为链表头!" << endl;
}
else // 如果链表非空
{
student *q = head;
while (q != NULL && q->id != id) // 找到要插入位置的后继节点
阅读全文