实验二栈的应用(数制转换)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二栈的应用(数制转换)

一、实验目的

掌握栈的基本操作:初始化栈、判栈为空、出栈、入栈等运算。二、实验要求

1.认真阅读和掌握本实验的算法。

2.上机将本算法实现。

3.保存程序的运行结果,并结合程序进行分析。

三、实验内容

利用栈的基本操作实现将任意一个十进制整数转化为R进制整数

算法为:

1、定义栈的顺序存取结构

2、分别定义栈的基本操作(初始化栈、判栈为空、出栈、入栈等)

3、定义一个函数用来实现上面问题:

(1)十进制整数X和R作为形参

(2)初始化栈

(3)只要X不为0重复做下列动作

将X % R入栈, X=X/R

(4)只要栈不为空重复做下列动作

栈顶出栈 , 输出栈顶元素

四、实验报告要求:

1、十进制整数转化为R进制整数算法的代码;

2、程序运行结果及分析;

3、实验总结。

1.实验源码:

#include""

#include""

#include""

#define maxsize 100

typedef struct{

int data[maxsize];

int top;

}seqstack,*pseqstack;

pseqstack setstack()

{

pseqstack s;

s=(pseqstack)malloc(sizeof(seqstack));

if(s)

s->top=-1;

return s;

}

int empty(pseqstack s)

{

if(s->top==-1)

return 1;

else

return 0;

}

pseqstack pushin(pseqstack s,int m,int r) {

if(s->top==maxsize-1)

printf("此栈已满,无法入栈!\n");

else

{

while(m!=0)

{

s->top++;

s->data[s->top]=m%r;

m=(m-(m%r))/r;

}

}

return s;

}

int popout(pseqstack s)

{

if(empty(s))

return 0;

else

{

printf("转化后的数是:");

while(s->top!=-1)

{

printf("%d",s->data[s->top]);

s->top--;

}

putchar('\n');

return 1;

}

}

void main()

{

int m,r;

pseqstack p;

p=(pseqstack)malloc(sizeof(seqstack));

printf("请输入一个十进制的正整数:");

scanf("%d",&m);

printf("请输入你想转化的进制位:");

scanf("%d",&r);

p=setstack();

p=pushin(p,m,r);

popout(p);

}

2.程序截图:

3.实验总结:

相关文档
最新文档