1 顺序栈的定义
int stk[N];
int top=-1;//栈顶指针指向栈顶元素
2 链栈
* 链栈的结点定义
struct Node{
int val;
Node *next;
Node(int x):val(x),next(NULL){}
};
- 链栈的初始化
带头结点
Node *init(){
Node *dummy = new Node(-1);
return dummy;
}
不带头结点
Node *init(){
return NULL;
}
以下写法都基于带头节点的链表来实现
* 判断是否为空栈
bool empty(Node *dummy){
return dummy->next==NULL;
}
- 进栈
void push(Node *dummy,int x){
Node *node = new Node(x);
node->next=dummy->next;
dummy->next=node;
}
*出栈
void pop(Node *dummy){
//默认所有操作合法
dummu->next=dummy->next->next;
}
*读栈顶元素
int top(Node *dummy){
return dummy->next->val;
}