倒数11和倒数17行出错
#include<iostream>
using namespace std;
#define SElemType student
#define Maxsize 100
typedef struct
{
int id;
int gender;
string name;
int age;
}student;
typedef struct
{
SElemType* base;//栈底指针
SElemType* top;//栈顶指针
int stacksize;//栈可用的最大容量
}SqStack;
int InitStack(SqStack& S)
{
//构造一个空栈
S.base = new SElemType[Maxsize];//为顺序栈动态分配一个最大容量为Maxsize的数组空间
if (!S.base)
exit(OVERFLOW);//存储分配失败
S.top = S.base;//栈顶指针等于栈底指针
S.stacksize = Maxsize;
return 0;
}
//顺序栈的入栈
bool Push(SqStack* S, SElemType *e)
{
if (S->top - S->base == Maxsize)
return false;//栈满
S->top->id = e->id;
S->top->age = e->age;
S->top->gender = e->gender;
S->top->name = e->name;
S->top++;
return true;
}
//2、出栈
SElemType PopSqStack(SqStack* s)
{
if (s->top == s->base)
cout << "erroe\n" << endl;
else
{
cout << "OK\n" << endl;
return *(s->top - 1);
}
}
//菜单
void menu()
{
cout << "***************************************************************************" << endl;
cout << "***********************************1、入栈*********************************" << endl;
cout << "***********************************2、出栈*********************************" << endl;
cout << "***********************************0、退出*********************************" << endl;
cout << "***************************************************************************" << endl;
}
int main()
{
int choice;
int length;
student a;
SElemType* b=new SElemType;
SqStack S;
InitStack(S);
void menu();
cout << "输入选择" << endl;
cin >> choice;
switch (choice)
{
case 1:
{
cout << "输入入栈的个数" << endl;
cin >> length;
for (int i = 1; i <= length; i++)
{
cout << "输入第" << i << "个id,age,name,gender" << endl;
cin >> a.id >> a.age >> a.name >> a.gender;
Push(*S, a); //这错了
}
break;
}
case 2:
{
b = PopSqStack(*S); //这也错了
cout << b->name << " " << b->age << " " << b->gender << " " << b->id << " " << endl;
break;
}
default:
cout << "菜单序号输入有误!" << endl;
system("pause");
break;
}
return 0;
}