入门的整数进制转换为二进制,用栈的相关操作,但是每次输出结果都会有数字乱码
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct
{
int* base;
int* top;
int maxsize;
int tascksize;
}Sqstack;
int Initstack(Sqstack& L)
{
L.base = new int(MAXSIZE);
if (!L.base)return 0;
L.top = L.base;
L.tascksize = MAXSIZE;
return 1;
}
void push(Sqstack& L, int a)
{
if (L.top - L.base == L.tascksize)
return;
L.top = a;
L.top++;
}
/
void pop(Sqstack &L,int a)
{
if(L.base==L.top)
return ;
--L.top;
a=L.top;
}/
void Zhuanhua(Sqstack& L, int a)
{
int b;
while (a)
{
b = a % 2;
push(L, b);
a = a / 2;
}
}
void printstack(Sqstack& L)
{
int* q = L.top;
while (q != L.base)
{
printf("%d ", *q);
L.top--;
q = L.top;
}
printf("%d\n", *L.base);
}
int main()
{
Sqstack L;
int s;
Initstack(L);
printf("请输入待转化元素:\n");
scanf("%d", &s);
Zhuanhua(L, s);
printf("结果是:\n");
printstack(L);
return 0;
}
结果
#define MAXSIZE 100
typedef struct
{
int* base;
int* top;
int maxsize;
int tascksize;
}Sqstack;
int Initstack(Sqstack& L)
{
L.base = new int(MAXSIZE);
if (!L.base)return 0;
L.top = L.base;
L.tascksize = MAXSIZE;
return 1;
}
void push(Sqstack& L, int a)
{
if (L.top - L.base == L.tascksize)
return;
*L.top = a;
L.top++;
}
void Zhuanhua(Sqstack& L, int a)
{
int b;
while (a)
{
b = a % 2;
push(L, b);
a = a / 2;
}
}
void printstack(Sqstack& L)
{
int* q = L.top;
while (q != L.base)
{
printf("%d ", *q);
L.top--;
q = L.top;
}
printf("%d\n", *L.base);
}
int main()
{
Sqstack L;
int s;
Initstack(L);
printf("请输入待转化元素:\n");
scanf("%d", &s);
Zhuanhua(L, s);
printf("结果是:\n");
printstack(L);
return 0;
}