链栈
liyichun001 · · 个人记录
【构造函数】
将栈首指针设为 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;
}