顺序栈——实现十进制转n进制


题目

实现栈的基本操作;进栈,出栈,初始化等操作。
实现十进制转n进制

#Examples 1
input
1234 8
output
2322

#Examples 2
input
4567 16
output
11D7

Source Program

#include<stdio.h>
#include<stdlib.h>
char b[20] = { "0123456789ABCDEF" };

typedef  struct node
{
	char a[100];//模拟栈
	int top;//栈顶
}seqstack,*pstack;

pstack init();//初始化栈,构造空栈
int Empty(pstack s);//是否为空
void Push(pstack s, char x);//入栈
int Pop(pstack s, char& x);//出栈
int main()
{
	pstack s=init();
	int x, n;
	char k;
	printf("请输入要转换的数据:");
	scanf("%d", &x);
	printf("请输入要转换成几进制:");
	scanf("%d", &n);
	while (x != 0)
	{
		Push(s, x % n);
		x /= n;
	}
	while (!Empty(s))
	{
		Pop(s, k);
		printf("%c", b[k]);
	}
	puts("");
	return 0;
}

pstack init()//构造空栈
{
	pstack s;
	s = (pstack)malloc(sizeof(seqstack));
	if(s)//使用前验证指针,若该指针的值无效,则结果是未定义的
	s->top = -1;
	return s;
}
int Empty(pstack s)//是否为空
{
	if (s->top == -1)
		return 1;
	return 0;
}

void Push(pstack s, char x)//入栈
{
	s->top++;
	s->a[s->top] = x;
}

int Pop(pstack s, char &x)//出栈
{
	if (Empty(s))
		return 0;
	x = s->a[s->top];
	s->top--;
	return 1;
}

tip

在线进制转换

实现方法(c++)
#include<iostream>
using namespace std;
char b[20] = { "0123456789ABCDEF" };
char a[1100];
int main()
{
	int x, n;
	cin >> x >> n;
	int k = 0;
	while (x != 0)
	{
		a[++k] = x % n;
		x = x / n;
	}
	for (int i = k; i >= 1; i--)
		cout << b[a[i]];
	cout << endl;
	return 0;
}
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值