#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
typedef int DataType_t;
typedef struct SequenceStack
{
DataType_t * Bottom;
unsigned int Size;
int Top;
}SeqStack_t;
SeqStack_t * SeqStack_Create(unsigned int size)
{
SeqStack_t *Manager = (SeqStack_t *)calloc(1,sizeof(SeqStack_t));
if(NULL == Manager)
{
perror("calloc memory for manager is failed");
exit(-1);
}
Manager->Bottom = (DataType_t *)calloc(size,sizeof(DataType_t));
if (NULL == Manager->Bottom)
{
perror("calloc memory for Stack is failed");
free(Manager);
exit(-1);
}
Manager->Size = size;
Manager->Top = -1;
return Manager;
}
bool SeqStack_IsFull(SeqStack_t *Manager)
{
return (Manager->Top + 1 == Manager->Size) ? true : false;
}
bool SeqStack_Push(SeqStack_t *Manager, DataType_t Data)
{
if ( SeqStack_IsFull(Manager) )
{
printf("SeqStack Full is Full!\n");
return false;
}
Manager->Bottom[++Manager->Top] = Data;
return true;
}
bool SeqStack_IsEmpty(SeqStack_t *Manager)
{
return (-1 == Manager->Top) ? true : false;
}
DataType_t SeqStack_Pop(SeqStack_t *Manager)
{
DataType_t temp = 0;
if ( SeqStack_IsEmpty(Manager) )
{
printf("SeqStack is Empty!\n");
return;
}
temp = Manager->Bottom[Manager->Top--];
return temp;
}
void SeqStack_Print(SeqStack_t *Manager)
{
for (int i = 0; i <= Manager->Top; ++i)
{
printf(" Stack Element[%d] = %d\n",i,Manager->Bottom[i]);
}
}
int main(int argc, char const *argv[])
{
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?