03、栈和队列
1、栈的基本概念
逻辑结构:
操作受限的线性表:只允许在一端进行增加和删除的线性表。
特点:先进后出
卡特兰数:
2、顺序栈的实现
定义:
typedef struct{
int data[Maxsize];
int top;
}Stack;
top是指向栈顶元素
进栈和出栈操作:
bool Push(SqStack *s,int x){
if(s->top == -1){
return false;
}
if(s->top >= Maxsize-1){
return false;
}
s->top++;
s->data[s->top] = x;
return true;
}
bool Pop(SqStack *s,int *x){
if(s->top == -1){
return false;
}
*x = s->data[s->top];
s->top--;
return true;
}
共享栈:
销毁时内存自动回收
3、链栈
和线性表当中的链表一样,只是进栈和出栈操作都是对头结点进行后插和后删操作一样。
//带头结点初始化
bool InitLink(LinkList *p){
*p = (LNode*)malloc