栈
栈的存储结构:
顺序栈
typedef struct SqStack
{
int data[maxSize];
int top;
}SqStack;
链式栈
typedef struct LNode
{
int data;
struct LNode *next;
}LNode;
::栈的本质是线性表::,和线性表的定义方式完全一样!
顺序栈
四要素:两状态+两操作
几个状态
- 空栈:st.top == -1//top 代表栈顶元素的index
- 满栈:st.top == maxSize-1
- 非法上下溢
两个基本操作
- 进栈:先移动指针,再进入元素
stack[++top] = x;
- 出栈:先取出元素,后移动指针
x = stack[top--];
::用前先判断,空时不出,满时不进!::
链栈
四要素:两状态+两操作
两个状态
- 空栈:lst->next == NULL
- 满栈:不存在这种情况
两个基本操作
进栈:头插法
::头结点原来是指向的栈顶啊!!!::出栈:出栈元素保存到x中
p = lst->next;
x = p->data;
lst->next = p->next;
free(p);
::考试不用写栈的函数,