首先我们知道数据结构的三要素:逻辑结构,数据的运算,存储结构(存储结构不同,运算的实现方法也不同)。
栈(Stack)是只允许从一端进行插入或删除操作的线性表。LIFO
在我们浏览器中查看js的时候,需要进行调试,那边就有栈函数,Stack_fun,也是一样的原理,函数由下往上调用。(题外话。)
卡特兰(Catalan)数。–采用数学归纳证明法。
#define MaxSize 10
typedef struct {
ElemType data[MaxSize]; //静态数组存放栈中元素
int top; //栈顶指针
}SqStack;
//初始化栈
void InitStack(SqStack &S)
{
S.top = -1; //初始化栈顶指针
}
void testStack()
{
SqStack S;//声明一个顺序栈(分配空间)
InitStack(s);
}
//判断栈空
bool StackEmpty(SqStack S){
if (S.top == -1)
return true;
else
return false;
}
共享栈:提高存储空间。
0号栈、1号栈。
链栈–
队列:只允许在一端进行插入,在另一端进行删除的线性表。
先进先出。FIFO
循环队列:用模运算将存储空间在逻辑上变成“环状”。