链栈的实现
#include<iostream>
using namespace std;
typedef int elementtype;
struct node{
elementtype data;
node *next;
};
typedef node * nodepointer;
bool initstack(nodepointer &S){
S=NULL;
return true;
}
void push(nodepointer &S,elementtype e){
nodepointer p;
p=new node;
p->data=e;
p->next=S;
S=p;
}
elementtype pop(nodepointer &S){
elementtype e=S->data;
nodepointer p;
p=S;
S=S->next;
delete p;
return e;
}
void visit(nodepointer &S){
cout<<"栈内元素为:";
while(S!=NULL){
cout<<pop(S)<<" ";
}
}
int main(){
elementtype e;
nodepointer S;
int n;
int op=1;
while(op){
system("cls");
cout<<"………………………………链栈操作……………………………………"<<endl;
cout<<"1 初始化栈 2 入栈 "<<endl;
cout<<"3 出栈 4 遍历栈 "<<endl;
cout<<"请输入想要操作功能前的数字"<<endl;
cin>>op;
switch(op){
case 1:
initstack(S);
getchar();getchar();
break;
case 2:
cout<<"输入想要入栈的元素"<<endl;
cin>>e;
push(S,e);
cout<<"入栈成功"<<endl;
getchar();getchar();
break;
case 3:
e=pop(S);
cout<<"栈顶元素为 "<<e<<endl;
getchar();getchar();
break;
case 4:
visit(S);
getchar();getchar();
break;
case 0:
break;
}
}
return 0;
}