语言:C++
#include <iostream> using namespace std; typedef struct StackNode { int data; struct StackNode *next; }StackNode,*LinkStack; //初始化 void InitStack(LinkStack &S) { //构造一个空栈,栈顶指针置空 S=NULL; } //入栈 void Push(LinkStack &S,int e) { //在栈顶插入元素e StackNode *p; p=new StackNode; p->data=e; p->next=S; S=p; } //出栈 int Pop(LinkStack &S,int &e) { //删除S的栈顶元素,用e返回其值 StackNode *p; if(S==NULL)cout<<"栈为空,出栈失败!"<<endl; e=S->data; p=S; S=S->next; delete p; cout<<"出栈成功!"<<endl; return e; } //取栈长 int LinkListSize(LinkStack S) { int i=0; StackNode *p=S; while(p->next!=NULL) { p=p->next; i++; } p=p->next; i++; return i; } //输出栈 void display(LinkStack S) { StackNode *p=S; while(p->next!=NULL) { cout<<p->data<<endl; p=p->next; } cout<<p->data<<endl; } int main() { LinkStack S;int x;int e;int i; cout<<"欢迎使用链栈!功能如下:"<<endl; cout<<"--------------------------"<<endl; cout<<"[1].初始化 [2].入栈"<<endl; cout<<"[3].出栈 [4].取栈长"<<endl; cout<<"[5].输出栈 [0].退出"<<endl; cout<<"--------------------------"<<endl; cout<<"请输入:";cin>>x; while(x) { switch(x) { case 1:InitStack(S);break; case 2:cout<<"请输入要入栈的元素:";cin>>e;Push(S,e);break; case 3:i=Pop(S,e);cout<<"出栈元素为:"<<i<<endl;break; case 4:i=LinkListSize(S);cout<<"当前栈长为:"<<i<<endl;break; case 5:cout<<"当前栈为:"<<endl;display(S);break; case 0:break; default:cout<<"您的选择错误,请重新输入!"<<endl; } cout<<"请选择您需要的功能:";cin>>x; } return 0; }