分类
Level5

链式栈


入栈的实现:
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;
}