栈和队列
一:栈
1:栈的概念
栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作,进行数据插入和删除的一端称为栈顶,另一端称为栈底。栈中的元素遵守先进后出的原则。
2:栈的基本操作
- push 向栈底添加元素
- pop 从栈顶取出元素
- size 判断栈中元素个数
- Empty 判断栈是否为空
- top 返回栈顶元素
3:代码实现
用链表实现栈
#define stack_size 100
typedef int DataType;
typedef struct stack {
DataType arr[stack_size];
int top;
}stack;
void stackInit(stack*s) {
s->top = 0;
}
int IsEmpty(stack* s) {
return s->top == 0;
}
int Isfull(stack* s) {
return s->top == stack_size - 1;
}
void push(stack* s, DataType val) {
s->arr[s->top] = val;
s->top++;
}
int Pop(stack* s) {
return s->arr[--s->top];
}
int top(stack* s) {
if (s->top == 0) {
printf(