栈进行十进制转换任意进制

目录

创建栈结构体

创建结点函数

入栈函数

遍历函数

进制转换函数

主函数

结果


创建栈结构体

#ifndef __SEQSATCK_H_
#define __SEQSATCK_H_

#define MAX 20
typedef int datatype;
typedef struct
{
    datatype data[MAX];         //存储栈的数组
    int top;                   //记录栈顶元素所在的下标
}seqStack;

创建结点函数

//创建
seqStack *stack_create()
{
	seqStack *S=(seqStack *)malloc(sizeof(seqStack));
	if(NULL==S)
	{
		printf("创建失败\n");
		return NULL;
	}
	//初始化
	S->top=-1;
	printf("创建成功\n");
	return S;
}

入栈函数

//入栈
void stack_push(seqStack *S,datatype e)
{
	//判断逻辑
	if(NULL==S || stack_full(S))
	{
		printf("入栈失败\n");
		return ;
	}

	//先加后压
	//S->data[++S->top] = e;
	++S->top;         //先加
	S->data[S->top] = e;      //后压

	printf("入栈成功\n");
}

遍历函数

//遍历
void stact_show(seqStack *S)
{
	//判断逻辑
	if(NULL==S || stack_empty(S))
	{
		printf("遍历失败\n");
		return;
	}
	printf("栈中元素从顶到栈底部>>>");
	for(int i=S->top;i>=0;i--)
	{
		printf("%d",S->data[i]);

	}
	//printf("\n");
	//puts("");
	putchar(10);
}

进制转换函数

//进制转换
void data_shift(seqStack *S,int D,int m)
{
	if(m!=2 || m!=8 || m!=16)
	{
		printf("转换失败!请输入正确的进制\n");
		return;
	}
	int a=D;
	while(D)
	{
		stack_push(S,D%m);
		D=D/m;
	}
	printf("%d经过%d进制转换后>>\n",a,m);
	stact_show(S);

}

主函数

#include <stdio.h>
#include "seqstack.h"
int main(int argc, const char *argv[])
{
	seqStack *S=stack_create();
	if(NULL==S)
	{
		return -1;
	}
//调用进制转换函数
	data_shift(S,98,7);
	return 0;
}

结果

ubuntu@ubuntu:stack$ gcc *.c
ubuntu@ubuntu:stack$ ./a.out 
创建成功
入栈成功
入栈成功
入栈成功
98经过8进制转换后>>
栈中元素从顶到栈底部>>>142

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值