数制转换代码顺序栈java_顺序栈的操作以及数制转换C语言实现

本文介绍了栈的基本操作,并展示了如何利用顺序栈进行数制转换。通过C语言实现,包括构造空栈、入栈、出栈、判空、取栈顶元素等操作,以及详细阐述了数制转换的实现原理和过程。
摘要由CSDN通过智能技术生成

这一篇先介绍栈的一些基本操作,再将栈应用在数制转换中。

代码预处理和栈的定义

代码预处理:

#include

#include

#define STACKSIZE 10

#define OK 1

#define ERROR 0

using namespace std;

栈的顺序存储表示:

typedef struct

{

int stacksize;

int *top;

int *base;

}Stack;

一、加工型操作

1.构造空栈

int InitStack(Stack &S)

{

S.base=(int *)malloc(STACKSIZE*sizeof(int));

if(!S.base)exit(1);

S.top=S.base;

S.stacksize=STACKSIZE;

return OK;

}

2.入栈

int Push(Stack &S,int e)

{

if(S.top-S.base>=S.stacksize)

{

S.base=(int *)realloc(S.base,(S.stacksize+STACKSIZE)*sizeof(int));

if(!S.base)exit(1);

S.top=S.base+S.stacksize;

S.stacksize+=STACKSIZE;

}

*S.top++=e;

return OK;

}

3.出栈

int Pop(Stack &S)

{

if(S.top==S.base)return ERROR;

int e=*--S.top;

return e;

}

4.销毁

void DestroyStack(Stack &S)

{

if(S.base==NULL)exit(1);

free(S.base);

S.base=NULL;

}

二、引用型操作

1.判空

int StackEmpty(Stack S)

{

if(S.base==NULL)exit(1);

int ret=S.top-S.base?ERROR:OK;//OK返回空栈

return ret;

}

2.取栈顶元素

int GetTop(Stack &S)

{

if(S.top==S.base)return ERROR;

int e=*(S.top-1);

return e;

}

栈的应用:数制转换

提示:如果读者是使用的纯C语言,可将iostream头文件变为stdio,去掉using namespace std;这行代码,

然后将cin和cout分别改为使用scanf和printf即可。

实现原理:

ec33d906d3e205d818268dafc49a66b3.png

实现过程:

void conversion(Stack &S)

{

int n,m;

cout<

cin>>n;

cout<

cin>>m;

while(n)

{

Push(S,n%m);

n=n/m;

}

cout<

while(S.top!=S.base)cout<

}

标签:顺序,数制,int,top,C语言,base,return,stacksize,Stack

来源: https://blog.csdn.net/weixin_46772309/article/details/113845318

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值