下面是一个示例代码,演示了如何定义Course和CourseSchedule类,并实现add和remove函数来管理课程列表:
#include <iostream>
class Course {
private:
std::string courseName;
public:
Course(const std::string& name) : courseName(name) {}
const std::string& getCourseName() const {
return courseName;
}
};
class CourseSchedule {
private:
Course** courses;
int size;
int capacity;
public:
CourseSchedule() : courses(nullptr), size(0), capacity(0) {}
~CourseSchedule() {
clear();
}
void add(Course* course) {
if (courses == nullptr) { // 初始化动态数组
capacity = 1;
courses = new Course*[capacity];
}
else if (size >= capacity) { // 动态扩展数组容量
capacity *= 2;
Course** temp = new Course*[capacity];
for (int i = 0; i < size; ++i)
temp[i] = courses[i];
delete[] courses;
courses = temp;
}
courses[size++] = course;
}
void remove(Course* course) {
int index = -1;
for (int i = 0; i < size; ++i) {
if (courses[i] == course) {
index = i;
break;
}
}
if (index != -1) { // 找到课程并移除
--size;
for (int i = index; i < size; ++i)
courses[i] = courses[i + 1];
if (size <= capacity / 2 && size > 1) { // 动态缩减数组容量
capacity /= 2;
Course** temp = new Course*[capacity];
for (int i = 0; i < size; ++i)
temp[i] = courses[i];
delete[] courses;
courses = temp;
}
}
}
void clear() {
delete[] courses;
courses = nullptr;
size = 0;
capacity = 0;
}
void printCourses() const {
std::cout << "Course Schedule: ";
for (int i = 0; i < size; ++i)
std::cout << courses[i]->getCourseName() << " ";
std::cout << std::endl;
}
};
int main() {
// 创建课程对象
Course course1("Math");
Course course2("Physics");
Course course3("Chemistry");
// 创建课程表对象
CourseSchedule schedule;
// 添加课程到课程表
schedule.add(&course1);
schedule.add(&course2);
// 打印当前的课程表
schedule.printCourses(); // Output: Course Schedule: Math Physics
// 删除一个课程,并打印更新后的课程表
schedule.remove(&course1);
schedule.printCourses(); // Output: Course Schedule: Physics
return 0;
}
这是一个简单的示例,展示了如何定义Course和CourseSchedule类,并实现add和remove函数来管理Course对象的动态数组。你可以根据自己的需求进行进一步修改和扩展。
内容由零声教学AI助手提供,问题来源于学员提问




