建立一个单向链表,将数组中的学生信息存放到链表中,并尝试再链表中进行排序。
时间: 2023-06-13 09:06:10 浏览: 117
以下是一个基于C++的单向链表的代码示例,其中学生信息包括姓名和年龄:
```c++
#include <iostream>
#include <string>
using namespace std;
// 定义学生结构体
struct Student {
string name;
int age;
Student* next;
};
// 创建链表
Student* createList() {
int n;
cout << "请输入学生人数:";
cin >> n;
Student* head = new Student;
head->next = NULL;
Student* tail = head;
for (int i = 0; i < n; i++) {
Student* newStu = new Student;
cout << "请输入第" << i+1 << "个学生的姓名和年龄:";
cin >> newStu->name >> newStu->age;
newStu->next = NULL;
tail->next = newStu;
tail = newStu;
}
return head;
}
// 输出链表
void printList(Student* head) {
Student* p = head->next;
while (p != NULL) {
cout << "姓名:" << p->name << "\t年龄:" << p->age << endl;
p = p->next;
}
}
// 对链表进行排序(按年龄从小到大)
void sortList(Student* head) {
Student* p = head->next;
while (p != NULL) {
Student* q = p->next;
while (q != NULL) {
if (p->age > q->age) {
// 交换节点
string tempName = p->name;
int tempAge = p->age;
p->name = q->name;
p->age = q->age;
q->name = tempName;
q->age = tempAge;
}
q = q->next;
}
p = p->next;
}
}
int main() {
Student* head = createList();
cout << "排序前的结果:" << endl;
printList(head);
sortList(head);
cout << "排序后的结果:" << endl;
printList(head);
return 0;
}
```
该代码会先让用户输入学生的人数,然后根据输入的人数逐个创建新的学生节点并加入链表中。然后会输出排序前的链表内容,接着对链表进行按年龄从小到大的排序,最后输出排序后的链表内容。
阅读全文