#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,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [翻译] 为什么 Tracebit 用 C# 开发
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端