目录
博主使用的C语言编译软件是 vs2022 在有些方面可能跟别的编译软件不太一样,大家可以选择性参考
1.栈的基本操作
(1)栈的初始化
//栈的初始化
bool InitSqstack(Sqstack* s)
{
s->top = -1;
}
(2)栈的判空
//栈判空
bool SqstackEmpty(Sqstack s)
{
if (s.top == -1) return true;
else return false;
}
(3)进栈
//入栈
bool Push(Sqstack* s, Elemtype e)
{
if (s->top == Maxsize - 1)
return false;
s->data[++s->top] = e;
return true;
}
(4)出栈
//出栈
bool Pop(Sqstack* s, Elemtype* e)
{
if (SqstackEmpty(*s))
return false;
*e = s->data[s->top--];
return true;
}
2.对于数制转化的算法思想
(博主的算法是将二进制转化为十进制,其思想都是大同小异的)
//进制转化
int main()
{
Sqstack s;
InitSqstack(&s);
int n, e, X;
printf("请输入需要转化的十进制数:");
scanf_s("%d", &n);
while (n != 0)
{
e = n % 2;
Push(&s, e);
n /= 2;
}
while (!SqstackEmpty(s))
{
Pop(&s, &X);
printf("% d", X);
}
return 0;
}
3.代码总结
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define Maxsize 50
#define bool char
#define false 0
#define true 1
typedef int Elemtype;
typedef struct Sqstack
{
Elemtype data[Maxsize];
int top;
}Sqstack;
//栈的初始化
bool InitSqstack(Sqstack* s)
{
s->top = -1;
}
//栈判空
bool SqstackEmpty(Sqstack s)
{
if (s.top == -1) return true;
else return false;
}
//入栈
bool Push(Sqstack* s, Elemtype e)
{
if (s->top == Maxsize - 1)
return false;
s->data[++s->top] = e;
return true;
}
//出栈
bool Pop(Sqstack* s, Elemtype* e)
{
if (SqstackEmpty(*s))
return false;
*e = s->data[s->top--];
return true;
}
//进制转化
int main()
{
Sqstack s;
InitSqstack(&s);
int n, e, X;
printf("请输入需要转化的十进制数:");
scanf_s("%d", &n);
while (n != 0)
{
e = n % 2;
Push(&s, e);
n /= 2;
}
while (!SqstackEmpty(s))
{
Pop(&s, &X);
printf("% d", X);
}
return 0;
}
ps:博主也是一名学习C语言新手小白代码中如果有需要改正的地方,请各位大佬们评论批评指正。谢谢
有需要借鉴代码的小伙伴,使用时请标注出处,谢谢啦!