当前位置首页 > 办公文档 > 工作计划
搜柄,搜必应! 快速导航 | 使用教程  [会员中心]

数据结构 栈十进制转八进制的算法详解(已测试过)【精选文档】

文档格式:DOC| 4 页|大小 19KB|积分 20|2022-01-15 发布|文档ID:48845497
第1页
下载文档到电脑,查找使用更方便 还剩页未读,继续阅读>>
1 / 4
此文档下载收益归作者所有 下载文档
  • 版权提示
  • 文本预览
  • 常见问题
  • 数据结构 栈十进制转八进制的算法详解(已测试过)【精选文档】实验目的建立栈实现十进制转八进制实验内容编程序并上机调试运行.建立栈实现十进制转八进制 1. 编写程序//十进制转八进制#include〈stdio.h〉#include#include〈malloc.h〉#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef struct { int *base; int *top; int stacksize;}sqstack;int initstack (sqstack *s){s—>base=(int *)malloc(STACK_INIT_SIZE * sizeof(int));if(!s—〉base)exit(0);s-〉top=s—〉base;s-〉stacksize =STACK_INIT_SIZE ;return 0;}//构造一个空栈sint push(sqstack *s,int e){ if((s-〉top—s—>base)〉=s—〉stacksize){ s—>base=(int*)realloc(s—>base,(s->stacksize + STACKINCREMENT )*sizeof(int)); if(!(s-〉base)) exit(1); s-〉top=s—>base+s—>stacksize; s->stacksize+=STACKINCREMENT;}*s—>top++=e;return 0;}//插入新的元素e为新的栈顶元素int stackempty (sqstack *s){if(s—>top==s->base)return 1;else return 0;}//若栈s为空栈,则返回1,否则返回0int pop (sqstack *s,int *e){if(s—〉top==s—>base)return 1;*e=*-—s—>top;return 0;}//若栈不为空,则删除s的栈顶元素,用e返回其值,返回OK,否则返回ERRORvoid conversion (int n){ sqstack s;int e; initstack(&s); printf(”请输入一个十进制数:\n”);scanf(”%d",&n);while (n){ push(&s,n%8); n=n/8;}printf("\n”);printf(”该数的八进制数为:\n”);while(!stackempty(&s)){ pop(&s,&e); printf("%d",e);}printf(”\n”);}//对于输入的任意一个非负十进制整数,打印出与其等值的八进制数int main(){ int n; //sqstack *s;// initstack(s);conversion (n);return 0;}//主函数运行程序:程序解析:1。

    首先是将程序的开头写好,要有#include〈stdlib.h>,然后定义 STACK_INIT_SIZE 为100 ,STACKINCREMENT为 10定义栈顶和栈底都为int型,并且stacksize为int型2. 构建一个空栈建立一个空栈,但建立不成功是就强制退出,建立成功时就使栈顶和栈顶指向同一个点,并且分配预定长度的节给stacksize3.插入新的元素e为新的栈顶元素插入一个新的元素到栈里,如果长度超过栈的长度,则重新分配新的空间给sqstack如果栈底部存在则发生错误,意外退出然后让e插入成为新的栈顶元素.4. 判断栈是否为空栈该函数用stackempty表示,如果栈顶等于栈底,则栈为空栈,返回1,否则返回0.5. 取出栈顶元素若栈为空,则返回1,若栈不为空,则让e指向s的栈顶元素,删除s的栈顶元素,用e返回其值建立conversion函数定义一个空栈s,然后scanf输入一个数,当该数不为0时,就执行push函数和n=n/8,如果n=0则跳出循环然后当栈不为空时,将栈顶一个一个取出,得到的为原十进制数的八进制数.7建立main函数这里的main函数只要三句话就够了定义n,和调用conversion函数,return 0。

    发奋识遍天下字 ,立志读尽人间书。

    点击阅读更多内容
    卖家[上传人]:abb
    资质:实名认证