1.栈的概念
特殊的线性结构: 进行操作的地方称为栈顶(插入/入栈和删除/出栈)
另一端为栈顶
栈只能有一段进行操作,就像手枪的弹匣一样,也像腔肠动物哈哈
可以理解成特殊的顺序表
2.栈的特性
后进先出(LIFO)
3.栈的操作
首先是栈的结构
typedef int DataType;
typedef struct Stack {
DataType* date;//栈顶元素
int capacity;
int size;//表示有效元素个数 栈顶位置
}Stack;
接下来是操作
void StackInit(Stack* s) {
s->capacity = 10;
s->date = (DateType*)malloc(sizeof(DateType)*s->capacity);
s->size = 0;
}
void StackPush(Stack* s, DateType date) {
if (s->size == s->capacity) {
s->date = (DateType*)realloc(s->date, 2 * s->capacity);
}
s->date[s->size] = date;
++s->size;
}
void StackPop(Stack* s) {
if (s->size == 0) {
return;
}
--s->size;
}
DateType StackTop(Stack* s) {
if (s->size == 0) {
return NULL;
}
return s->date[s->size - 1];
}
int StackSize(Stack* s) {
return s->size;
}
int StackEmpty(Stack* s) {
return s->size != 0;
}
void StackDestory(Stack* s) {
free(s->date);
s->capacity = 0;
s->size = 0;
}