按下列要求编写程序: 1.定义学生信息的栈数据结构 (包括学号 姓名 成绩) 2. 设计栈的初始化、入栈、出栈等功能函数,实现学生信息的依次入栈与出栈 3.编写程序主函数,对各个功能函数进行调用 4.物理存储结构不限,顺序存储或者链式存储均可
时间: 2024-05-31 20:06:57 浏览: 65
#include <iostream>
#include <string>
using namespace std;
const int MAXSIZE = 100; // 栈的最大容量
struct Student // 学生信息结构体
{
int num; // 学号
string name; // 姓名
double score; // 成绩
};
struct Stack // 栈数据结构
{
Student data[MAXSIZE]; // 栈元素数组
int top; // 栈顶指针
};
void initStack(Stack& s) // 初始化栈
{
s.top = -1; // 栈顶指针初始化为-1
}
bool push(Stack& s, Student x) // 入栈
{
if (s.top == MAXSIZE - 1) // 栈已满
return false;
s.data[++s.top] = x; // 栈顶指针加1,入栈
return true;
}
bool pop(Stack& s, Student& x) // 出栈
{
if (s.top == -1) // 栈已空
return false;
x = s.data[s.top--]; // 出栈,栈顶指针减1
return true;
}
int main()
{
Stack s; // 定义栈
initStack(s); // 初始化栈
// 依次入栈
Student stu1 = { 1001, "Tom", 85 };
push(s, stu1);
Student stu2 = { 1002, "Jerry", 90 };
push(s, stu2);
Student stu3 = { 1003, "Mary", 95 };
push(s, stu3);
// 依次出栈并输出
Student x;
while (pop(s, x))
cout << x.num << " " << x.name << " " << x.score << endl;
return 0;
}
阅读全文