简介
链栈是采用连式存储结构的一种数据结构;由链表来表示
下面介绍其存储结构
1、存储结构
#define elemType int
//typedef int elemType;
typedef struct{
elemType data;//节点数据域
struct stackNode *next;//节点指针域
}stackNode,*linkStack;//linkStack是指向stackNode的指针数据类型
2、链栈的初始化
构造空栈,将栈顶指针置空(无需设置头结点)
#define status int
//typedef int status;
status init_Link_stack(linkStack &S){//构造空栈,栈顶指针置空
S=NULL;
return 1;
}
3、入栈
1.为即将入栈的元素分配空间,并用指针p指向它
2.将新节点的指针域置空
3.将新节点置栈顶
4.将栈顶指针修改为p
#define selemType int
//typedef int selemType;
status push(linkStack &S,selemType e){
linkStack p;
p=new stackNode;
p->data=e;
p->next=S;
S=p;
return 1;
}
4、出栈
1.判断栈是否为空
2.将栈顶元素赋值为e
3.暂时保存栈顶元素的空间
4.修改栈顶指针,指向新的栈顶(即出栈前元素下面的那个元素)
5.释放原来栈顶指针的空间
status pop(linkStack &S,selemType &e){
linkStack p;
if(S==NULL)
return 0;
e=S->data;
p=S;
S=S->next;
delete p;
return 1;
}
5、取栈顶
1.判断栈是否为空
2.取栈顶元素
selemType get_Top(linkStack S){
if(S!=NULL)
return S->data;
}