按下列要求编写程序: 1. 定义学生信息的栈数据结构 (包括 学号 姓名 成绩) 2. 设计栈的初始化、入栈、出栈等功能函数,实现学生信息的依次入栈与出栈 3. 编写程序主函数,对各个功能函数进行调用 4. 物理存储结构不限,顺序存储或者链式存储均可
时间: 2023-05-30 18:06:04 浏览: 162
数据结构:定义一个包含学生信息(学号、姓名、成绩)的顺序表_数据结构
5星 · 资源好评率100%
#include <iostream>
using namespace std;
const int MAXSIZE = 100;
// 学生信息结构体
struct Student {
int id; // 学号
string name; // 姓名
double score; // 成绩
};
// 栈结构体
struct Stack {
Student data[MAXSIZE]; // 存储学生信息的数组
int top; // 栈顶指针
};
// 栈的初始化
void InitStack(Stack &s) {
s.top = -1;
}
// 判断栈是否为空
bool IsEmpty(Stack s) {
return s.top == -1;
}
// 判断栈是否已满
bool IsFull(Stack s) {
return s.top == MAXSIZE - 1;
}
// 入栈
bool Push(Stack &s, Student stu) {
if (IsFull(s)) {
cout << "栈已满,无法入栈!" << endl;
return false;
} else {
s.top++;
s.data[s.top] = stu;
return true;
}
}
// 出栈
bool Pop(Stack &s, Student &stu) {
if (IsEmpty(s)) {
cout << "栈为空,无法出栈!" << endl;
return false;
} else {
stu = s.data[s.top];
s.top--;
return true;
}
}
// 主函数
int main() {
Stack s;
InitStack(s); // 初始化栈
// 学生信息入栈
Student stu1 = {101, "张三", 90.5};
Push(s, stu1);
Student stu2 = {102, "李四", 85.0};
Push(s, stu2);
Student stu3 = {103, "王五", 92.5};
Push(s, stu3);
// 学生信息出栈并打印
Student stu;
while (Pop(s, stu)) {
cout << "学号:" << stu.id << ",姓名:" << stu.name << ",成绩:" << stu.score << endl;
}
return 0;
}
阅读全文