入栈的实现:
p->next = top ;
top = p; //修改栈顶位置
出栈的实现:
p = top;
p = p->next;
delete top;
top = p;
#include <bits/stdc++.h>
using namespace std;
struct Stack{ //栈元素
int data;
struct Stack *next;
};
Stack *top = NULL; //栈顶指针
void push(int x){ //入栈
Stack *p = new Stack;
p->data = x;
p->next = top;
top = p; //修改栈顶位置
}
void pop(){ //出栈
Stack *p = top;
if(p != NULL){
cout<<p->data<<"出栈"<<endl;
p = p->next;
delete top;
top = p;//修改指针位置
}else{
cout<<"栈空"<<endl;
}
}
int getlen(){ //获得栈长度
int len = 0;
Stack *p = top;
while(p != NULL){
len++;
p = p->next;
}
return len;
}
void display(){ //显示栈元素
Stack *p = top;
while(p != NULL){
cout<<p->data<<" ";
p = p->next;
}
cout<<endl;
}
int main(){
int order,x;
cout<<"输入指令:"<<endl;
while(1 == 1){
cout<<"1:入栈,2:出栈,3:显示,4:求栈长!"<<endl;
cin>>order;
if(order == 1){
cin>>x;
push(x);
display();
}else if(order == 2){
pop();
display();
}else if(order == 3){
display();
}else if(order == 4){
cout<<getlen()<<endl;
}
}
return 0;
}