链栈

· · 个人记录

【构造函数】

将栈首指针设为 NULL 即可

void linkStack(){
    top=NULL;
}

【析构函数】

void ~linkStack(){
    while(top!=NULL){//栈不为空
        Node *p;
        p=top->next;//工作指针暂存下一元素
        delete top;//删除栈顶元素
        top=p;//栈顶指针指向下一元素
    }
}

【进栈】

将新元素存入栈 栈指针指向下一元素

void push(int x){
    Node *s=new Node;
    s->data=x;//新元素入栈
    s->next=top;//指向栈顶
    top=s;//栈顶指针指向下一元素
}

【出栈算法】

若 top=NULL,则给出下溢信息 获取要退栈的元素 x,并删除退栈元素所占的空间 栈指针指向下一元素 返回退栈元素

void pop(){
    if(top==NULL)//溢出判断{
        cout<< "下溢";
    }
    int x=top->data;//取出栈元素
    Node *p=top;//暂存栈顶元素
    top=top->next;//指向下一元素
    delete p;
}

【判断栈空】

判断栈顶指针是否为 NULL,若 top=NULL,则栈空

bool empty(){
    if(top==NULL)
        return true;
    return false;
}

【取栈顶元素】

判断栈是否为空 若栈不为空,直接返回栈顶元素 top->data

int getTop(){
    if(empty()) cout<<"下溢";return 0;
    return top->data;
}