用尾插法创建一个带头结点的单链表,单链表的结点结构包括:学生学号、课程成绩及指向下一个结点的指针。利用单链表实现统计一个班学生的某门课程的平均分,并显示此门课程的平均分。要求:用VC++6.0,写出头文件,完整代码,不要分段
时间: 2024-10-07 08:03:08 浏览: 63
在VC++6.0中,我们可以使用结构体定义链表节点,并使用尾插法添加新元素。这里是一个简单的示例,包含链表头文件(StudentList.h)和实现文件(StudentList.cpp),用于计算并显示某一课程的平均分数:
**StudentList.h**
```cpp
#pragma once
#include <iostream>
using namespace std;
// 定义链表节点结构
struct ListNode {
int studentNo; // 学生学号
float courseScore; // 课程成绩
ListNode* next; // 指向下一个节点的指针
};
class StudentList {
public:
// 构造函数和析构函数
StudentList();
~StudentList();
// 尾插法添加新节点
void insert(int no, float score);
// 计算并显示指定课程的平均分
void calculateAndDisplayAverage(int targetCourse);
private:
ListNode* head;
};
```
**StudentList.cpp**
```cpp
#include "StudentList.h"
StudentList::StudentList() : head(nullptr) {}
StudentList::~StudentList() {
while (head) {
ListNode* temp = head;
head = head->next;
delete temp;
}
}
void StudentList::insert(int no, float score) {
ListNode* newNode = new ListNode();
newNode->studentNo = no;
newNode->courseScore = score;
newNode->next = nullptr;
if (!head) {
head = newNode;
} else {
ListNode* current = head;
while (current->next)
current = current->next;
current->next = newNode;
}
}
void StudentList::calculateAndDisplayAverage(int targetCourse) {
int totalScore = 0;
int count = 0;
ListNode* current = head;
while (current) {
if (current->courseScore == targetCourse) {
totalScore += current->courseScore;
count++;
}
current = current->next;
}
if (count > 0) {
float average = static_cast<float>(totalScore) / count;
cout << "该课程的平均分为: " << average << endl;
} else {
cout << "没有找到该课程的成绩" << endl;
}
}
```
阅读全文