#include<iostream>
using namespace std;
typedef struct linkStack
{
int data;
struct linkStack *next;
}linkStack,*link;
void InitStack(link &L){ //链栈构建无需头结点
L=NULL;
}
void Push(link &L){
int p;
cout<<"请输入要入栈的值"<<endl;
cin>>p;
link Q=new linkStack;
Q->data=p;
Q->next=L;
L=Q; //个人认为始终保持L在链栈头结点处
}
void Pop(link &L){ //始终遵循后进先出原则(出栈)
if(L==NULL)
cout<<"栈空"<<endl;
else{
int e=L->data;
link U=L;
L=L->next;
delete U;
cout<<"出栈值为"<<e<<endl;
}
}
void print(link L){
if(L==NULL)
cout<<"栈空"<<endl;
else
while(L!=NULL){
cout<<L->data<<" ";
L=L->next;
}
cout<<endl;
}
int main(){
int choice;
link L;
while(1){
cout<<"1.建栈\n"<<"2.入栈\n"<<"3.出栈\n"<<endl;
cin>>choice;
switch (choice){
case 1:
InitStack(L);
break;
case 2:
Push(L);
print(L);
break;
case 3:
Pop(L);
print(L);
break;
}
}
return 0;
}
04-16
419
02-01
850
12-24