一, 实验题目实验六堆栈实验设计算法,把一个十进制整数转化为二进制数输出。二, 问题分析本程序要求将一个十进制整数转化为二进制数输出。完成此功能所要解决的问题是熟练掌握和运用入栈和出栈操作,实现十进制整数转化为二进制数。(1) 数据的输入形式和输入值得范围:输入的是一个十进制整数,且其为正整数。(2) 结果的输出形式:输出的是一个二进制整数(3) 测试数据: 1)92) 4500 三, 概要设计 1 .为了实现上述程序功能,需要: ?构造一个空的顺序栈 s?将十进制整数除以 2 的余数入栈?将余数按顺序出栈 2 .本程序包含 7 个函数: 1) 主函数 main (); 2) 顺序栈判栈空函数 stackempty(seqstack *s) 3) 顺序栈置空栈函数 seqstack *initstack(seqstack *s) 4) 顺序栈入栈函数 push(seqstack *s,int x) 5) 顺序栈出栈函数 pop(seqstack *s) 6) 顺序栈取栈顶元素函数 gettop(seqstack *s) 7) 将十进制数转换为二进制数函数 setnum(int num) 各函数间关系如下: initstack(&s) main ()s etnum () i nitstack ()— stackempty () g ettop () p op () Push () 四, 详细设计 1 ,顺序表的结构类型定义: typedef struct{ int data[maxlen]; int top; }seqstack; 2 ,顺序栈入栈函数的伪代码: void push(seqstack *s,int x){ if(s->top<=maxlen-1&&s->top>=-1){ s->top++; s->data[s->top]=x;} else printf("error");} 3 ,顺序栈出栈函数的伪代码: void pop(seqstack *s){ if(s->top>=0) s->top--; else printf("error") ;} 4 ,将十进制数转换为二进制数函数伪代码: void setnum(int num){ seqstack s; initstack(&s); while(num){ int k=num%2; push(&s,k); num=num/2;} while(!stackempty(&s)){ int x=gettop(&s); printf("%d",x); pop(&s); }} 五, 源代码#include "" #define maxlen 100 typedef struct{ // 定义顺序栈的结构类型 int data[maxlen]; int top; }seqstack; int stackempty(seqstack *s){ // 顺序栈判栈空算法 if(s->top>=0) return 0; else return 1; } seqstack *initstack(seqstack *s){ // 顺序栈置空栈算法 s->top=-1; return s;} void push(seqstack *s,int x){ // 顺序栈入栈算法 if(s->top<=
数据结构实验六 堆栈实验 来自淘豆网m.daumloan.com转载请标明出处.