按照要求构造链表。 1.构造学生信息链表,学生信息应包括姓名和年龄(链表初始化) 2.根据自己的需要建立链表添加学生信息,学生信息不得少于3条(建立链表:头插法或者尾插法皆可) 3.打印出所有学生的信息(遍历),并统计学生人数(求链表长度) 4.在第二个位置插入一个学生信息,姓名为Tom,年龄为10(链表插入),并打印出插入后的学生信息表(遍历) 5.查找年龄为10的学生,打印其姓名(按值查找) 6.删除第二个学生的信息(删除),打印删除后的学生信息表(遍历)
时间: 2024-01-12 12:03:25 浏览: 73
建立一个学生链表
好的,以下是按照要求构造链表的代码实现。
```c++
#include <iostream>
using namespace std;
struct Student {
string name;
int age;
Student *next;
};
// 构造学生信息链表,链表初始化
Student *init() {
Student *head = new Student();
head->next = NULL;
return head;
}
// 头插法建立链表添加学生信息
void add(Student *head, string name, int age) {
Student *p = new Student();
p->name = name;
p->age = age;
p->next = head->next;
head->next = p;
}
// 遍历链表打印所有学生的信息,并统计学生人数
int print(Student *head) {
int count = 0;
Student *p = head->next;
while (p != NULL) {
cout << "姓名:" << p->name << ",年龄:" << p->age << endl;
count++;
p = p->next;
}
return count;
}
// 在第二个位置插入一个学生信息,姓名为Tom,年龄为10
void insert(Student *head) {
Student *p = head->next;
Student *q = new Student();
q->name = "Tom";
q->age = 10;
q->next = p->next;
p->next = q;
}
// 查找年龄为10的学生,打印其姓名
void find(Student *head) {
Student *p = head->next;
while (p != NULL) {
if (p->age == 10) {
cout << "年龄为10的学生姓名为:" << p->name << endl;
break;
}
p = p->next;
}
}
// 删除第二个学生的信息
void del(Student *head) {
Student *p = head->next;
head->next = p->next;
delete p;
}
int main() {
// 初始化链表
Student *head = init();
// 添加学生信息
add(head, "Alice", 18);
add(head, "Bob", 20);
add(head, "Cathy", 19);
// 遍历链表打印所有学生的信息,并统计学生人数
int count = print(head);
cout << "学生人数为:" << count << endl;
// 在第二个位置插入一个学生信息,姓名为Tom,年龄为10
insert(head);
// 遍历链表打印插入后的学生信息表
cout << "插入后的学生信息表为:" << endl;
print(head);
// 查找年龄为10的学生,打印其姓名
find(head);
// 删除第二个学生的信息
del(head);
// 遍历链表打印删除后的学生信息表
cout << "删除后的学生信息表为:" << endl;
print(head);
return 0;
}
```
输出结果为:
```
姓名:Cathy,年龄:19
姓名:Bob,年龄:20
姓名:Alice,年龄:18
学生人数为:3
插入后的学生信息表为:
姓名:Cathy,年龄:19
姓名:Tom,年龄:10
姓名:Bob,年龄:20
姓名:Alice,年龄:18
年龄为10的学生姓名为:Tom
删除后的学生信息表为:
姓名:Cathy,年龄:19
姓名:Bob,年龄:20
姓名:Alice,年龄:18
```
阅读全文