💖💖💖欢迎来到我的博客,我是anmory💖💖💖
又和大家见面了
欢迎来到动画详解数据结构系列
用通俗易懂的动画的动画使数据结构可视化
先来自我推荐一波
个人网站欢迎访问以及捐款
推荐阅读
如何低成本搭建个人网站
专栏:动画详解leetcode算法题
C语言知识
栈的概念
栈(Stack)是只允许在一端进行插入或删除操作的线性表。
进栈
出栈
用数组实现栈
typedef int DataType;
// 定义一个栈,包含数据,栈顶元素下标,栈的大小
struct Stack
{
DataType* data;
int top;
int size;
};
栈的初始化
// 栈的初始化
void StackInit(Stack* st)
{
st->data = NULL;
st->size = 0;
// top指向栈顶元素的下一个
st->top = 0;
}
入栈
// 入栈
void StackPush(Stack* st, DataType x)
{
if (st->top == st->capacity)
{
int newcapacity = st->capacity == 0 ? 4 : st->capacity * 2;
DataType* new = (DataType*)malloc(sizeof(DataType));
// 如果开辟失败
if (new == NULL)
{
perror("malloc fail");
return;
}
// 如果开辟成功
st->data = new;
st->capacity = newcapacity;
}
st->data[st->top] = x;
st->top++;
}
出栈
// 出栈
void StackPop(Stack* st)
{
assert(st);
st->top--;
}
栈的判空
// 栈的判空
bool StackIsEmpty(Stack* st)
{
assert(st);
assert(st->top > 0);
if (st->top == 0)
{
return true;
}
else
{
return false;
}
}
返回栈顶元素
// 返回栈顶元素
DataType StackTop(Stack* st)
{
assert(st);
assert(st->top > 0);
return st->data[st->top - 1];
}
栈的大小
// 栈的大小
int StackSize(Stack* st)
{
assert(st);
return st->top;
}
栈的销毁
// 栈的销毁
void StackDestroy(Stack* st)
{
assert(st);
free(st->data);
st->data = NULL;
st->top = st->capacity = 0;
}
总结
💖💖💖非常感谢各位的支持💖💖💖
我们共同进步
本系列持续更新,关注我,带你手撕面试算法题
下期再见