數據結構順序棧的代碼實現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<<"已退出?。?#34;;return 0;
break;
default:cout<<"輸入有誤!"<<endl;
}
}
return 0;
}