c++成绩单链表排序
时间: 2023-11-18 13:53:27 浏览: 92
c++链表排序程序示例
5星 · 资源好评率100%
好的,针对你的问题,我可以给出以下思路:
1. 定义一个链表节点结构体,包含学生姓名、学号、成绩等信息;
2. 读入学生信息,创建链表;
3. 对链表进行排序,可以使用冒泡排序、快速排序等算法;
4. 输出排序后的链表。
以下是示例代码:
```c++
#include <iostream>
#include <string>
using namespace std;
// 定义链表节点结构体
struct Node {
string name;
int id;
int score;
Node* next;
};
// 冒泡排序
void bubbleSort(Node* head) {
if (head == nullptr || head->next == nullptr) {
return;
}
bool flag = true;
while (flag) {
flag = false;
Node* p = head->next;
while (p->next != nullptr) {
if (p->score < p->next->score) {
swap(p->name, p->next->name);
swap(p->id, p->next->id);
swap(p->score, p->next->score);
flag = true;
}
p = p->next;
}
}
}
int main() {
// 读入学生信息,创建链表
Node* head = new Node();
Node* p = head;
int n;
cout << "请输入学生人数:";
cin >> n;
for (int i = 0; i < n; i++) {
Node* node = new Node();
cout << "请输入第" << i + 1 << "个学生的姓名、学号、成绩:";
cin >> node->name >> node->id >> node->score;
p->next = node;
p = p->next;
}
p->next = nullptr;
// 对链表进行排序
bubbleSort(head);
// 输出排序后的链表
p = head->next;
while (p != nullptr) {
cout << p->name << " " << p->id << " " << p->score << endl;
p = p->next;
}
// 释放链表内存
p = head;
while (p != nullptr) {
Node* q = p;
p = p->next;
delete q;
}
return 0;
}
```
阅读全文