#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]);
}
}
char DecToHex(SeqStack_t *Manager, int dec)
{
int remainder;
while (dec > 0)
{
remainder = dec % 16;
SeqStack_Push(Manager, remainder);
dec = dec / 16;
}
while (!SeqStack_IsEmpty(Manager))
{
remainder = SeqStack_Pop(Manager);
if (remainder < 10)
{
printf("%d", remainder+'0');
}
else
{
printf("%c", 'A' + remainder - 10);
}
}
}
int main(int argc, char const *argv[])
{
SeqStack_t *Manager = SeqStack_Create(100);
int dec;
printf("请输入一个非负的十进制整数:");
scanf("%d", &dec);
printf("该数的十六进制数为:0x");
printf("%c\n", DecToHex(Manager, dec));
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端