数据结构顺序栈的代码实现2

#include <iostream>
//Stack
#define maxLen 100
using namespace std;
typedef struct elemType {
int elemNo;
string elemName;
}elemType;
typedef struct sqStack {
elemType data[maxLen];
int top;
}sqStack;
void initStack(sqStack &st){
cout<<endl<<"初始化&清除成功!"<<endl;
st.top = -1;
}
elemType getTop(sqStack &st) {//获取栈顶
elemType t;
if(st.top > -1){
cout<<"栈顶元素为:\n";
cout<<st.data[st.top].elemNo<<endl;
t = st.data[st.top];
}
else {
cout<<"当前为空栈!"<<endl;
}
return t;
}
void getLength(sqStack st){
for(int i = 0; i <= st.top; i++){
cout<<endl<<st.data[i].elemNo<<endl;
}
cout<<"当前栈内元素个数为:"<<st.top+1<<endl;
}
void push(sqStack &st, elemType elem) {//入栈
if(st.top<maxLen-1){
elem.elemNo=st.top+1;
st.data[++st.top] = elem;
cout<<"入栈成功!"<<endl;
}
else cout<<"当前栈已满!!"<<endl;
}
elemType pop(sqStack &st) {//出栈
elemType elem;
if(st.top>-1){
cout<<"出栈元素为:\n";
cout<<st.data[st.top].elemNo<<endl;
elem = st.data[st.top--];
}
else cout<<"当前为空栈!"<<endl;
return elem;
}
elemType setAndGetEmem(int elemNo, string elemName) {
elemType elem;
elem.elemNo = elemNo;
elem.elemName = elemName;
return elem;
}
void menu (){
cout<<endl<<"\n1.初始化栈\n2.入栈\n3.出栈\n4.获取栈顶元素\n5.获取栈长度\n6.退出"<<endl;
cout<<"请输入选项: "<<endl;
}
int main() {
sqStack st; //声明变量
while(1){
menu();
int choice = 1;
cin>>choice;
switch(choice){
case 1:initStack(st);//初始化
break;
case 2:push(st, setAndGetEmem(1, "test")); //入栈
break;
case 3:pop(st); //出栈
break;
case 4:getTop(st); //改获取栈顶元素
break;
case 5:getLength(st); //改获取栈顶元素
break;
case 6:cout<<"已退出!!";return 0;
break;
default:cout<<"输入有误!"<<endl;
}
}
return 0;
}