/*
*Copyright (c) 2017,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:项目6-把十进制的整数转换为任一进制数输出。提示:要转换为r进制,则原来的数逐次除以基数r(除完之后用商再除),直到商为0,得到的一系列余数的逆序就是转换结果。这里的“逆序”,意味着后产生的余数,会先输出,后进先出,栈的机会来了……
*作    者:邵雪源
*完成日期:2017年12月13日
*版 本 号:v1.0
*/
#include <stdio.h>
#include <malloc.h>
typedef int ElemType;
typedef struct linknode
{ElemType data;              //数据域struct linknode *next;      //指针域
} LiStack;                      //链栈类型定义
void InitStack(LiStack *&s)  //初始化栈
{s=(LiStack *)malloc(sizeof(LiStack));s->next=NULL;
}
void DestroyStack(LiStack *&s)  //销毁栈
{LiStack *p=s->next;while (p!=NULL){free(s);s=p;p=p->next;}free(s);    //s指向尾结点,释放其空间
}
int StackLength(LiStack *s)  //返回栈长度
{int i=0;LiStack *p;p=s->next;while (p!=NULL){i++;p=p->next;}return(i);
}
bool StackEmpty(LiStack *s)  //判断栈是否为空
{return(s->next==NULL);
}
void Push(LiStack *&s,ElemType e)  //入栈
{LiStack *p;p=(LiStack *)malloc(sizeof(LiStack));p->data=e;              //新建元素e对应的节点*pp->next=s->next;        //插入*p节点作为开始节点s->next=p;
}
bool Pop(LiStack *&s,ElemType &e)  //出栈
{LiStack *p;if (s->next==NULL)      //栈空的情况return false;p=s->next;              //p指向开始节点e=p->data;s->next=p->next;        //删除*p节点free(p);                //释放*p节点return true;
}
bool GetTop(LiStack *s,ElemType &e)  //取栈顶元素
{if (s->next==NULL)      //栈空的情况return false;e=s->next->data;return true;
}
void DispStack(LiStack *s)  //输出栈中元素
{LiStack *p=s->next;while (p!=NULL){printf("%c ",p->data);p=p->next;}printf("\n");
}
void MultiBaseOutput (int number,int base)
{//假设number是非负的十进制整数,输出等值的base进制数int i;LiStack *S;InitStack(S);while(number)   //从右向左产生base进制的各位数字,并将其进栈{Push(S,number%base); //将将余数进栈number/=base;}while(!StackEmpty(S))   //栈非空时退栈输出{Pop(S, i);printf("%d",i);}
}
int main()
{MultiBaseOutput(10, 2);return 0;
}

第五周实践项目6 数制转换(栈)相关推荐

  1. 第五周实践项目7 后缀表达式

    基于栈结构,将中缀表达式转换为后缀表达式的算法步骤是: 初始化运算符栈op; 将'='进栈; 从exp读取字符ch; while (ch!='\0') {     if (ch不为运算符)  将后续的 ...

  2. 第五周实践项目8 8皇后问题的回溯求解_栈结构

    [全文] 回溯法是一种通用的搜索算法,几乎可以用于求解任何可计算的问题.算法的执行过程就像是在迷宫中搜索一条通往出口的路线,总是沿着某一方向向前试探,若能走通,则继续向前进:如果走不通,则要做上标记, ...

  3. 排序算法整理(第十五周实践项目)

    直接插入排序 #include <stdio.h> #define MaxSize 20 typedef int KeyType; //定义关键字类型 typedef char InfoT ...

  4. 第七周实践项目6 停车场模拟(栈和队列综合)

    设停车场是一个可停放n辆汽车的狭长死胡同,南边封口,汽车只能从北边进出(这样的停车场世间少有).汽车在停车场内按车辆到达时间的先后顺序,最先到达的第一辆车停放在车场的最南端,依次向北排开.若车场内已停 ...

  5. 《Python编程快速上手——让繁琐工作自动化》第五章实践项目

    5.6.2列表到字典的函数,针对好玩游戏物品清单 def displayInventory(inventory):print("Inventory:")item_total = 0 ...

  6. 第十二周实践项目一--图及存储结构算法库

    代码: 1.头文件:graph.h,包含定义图数据结构的代码.宏定义.要实现算法的函数的声明: <span style="font-size:12px;">#ifnde ...

  7. 2015级C++第3周实践项目

    [项目1:个人所得税计算器] 编写选择结构程序,输入个人月收入总额,计算出他本月应缴税款和税后收入(计算办法见附:关于个人所得税的有关背景知识). (1)自选if语句的嵌套或/和switch语句完成程 ...

  8. 2015级C++第14周实践项目 模板

    [项目1-排序函数模板] 已知 void Sort(int a[],int size); void Sort(double a[],int size); 是一个函数模板的两个实例,其功能是将数组a中的 ...

  9. 第八周实践项目9 算法库——广义表

    /* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目9- *作 者:邵雪源 *完成日期:2017年12月14日 *版 ...

最新文章

  1. FreeBSD 安装过程
  2. Windows下Caffe的学习与应用(一)——训练自己的数据模型(GoogleNet)
  3. php每天一题:strlen()与mb_strlen()的作用分别是什么
  4. java date 最小值_java – Datepicker和timepicker – 设置最大值和最小值
  5. 创建外部快照_快照事件:现在如何仅通过拍照即可创建日历事件
  6. java 单例 饿汉式_Java-单例设计模式(懒汉与饿汉)
  7. ucinet三天写论文!QAP分析实战
  8. 微软云Blob存储账号使用——Java使用
  9. Word无法插入页码怎么办?Word页码选项变灰,无法使用解决方法
  10. SAP ALV 导出 Excel 负号前置「实例」
  11. Hadoop 实战之分析专利引用数据集(三)
  12. aspose.words生成word文档(.dox、.docx等)时,生成目录后,目录中的页码和实际页码不对应,代码中更新域都没用
  13. 同源跨窗口通信:网易云音乐不同标签页打开同一页面,暂停原先标签页音频播放
  14. nargchk和nargin
  15. Python深度学习(一)深度学习基础
  16. 关于const的拙见
  17. AJAX框架眼镜穿搭夏天,20套夏天穿搭!我帮你整理出来了
  18. MATLAB 矩阵数据可视化imagesc 以及 如何多图共用一个 colorbar
  19. Android Studio中配置Genymotion模拟器
  20. 苹果笔记本充不了电怎么回事|苹果笔记本充不了电的修复方法

热门文章

  1. SQL Server 2012中的ColumnStore Index尝试
  2. WINCE5.0下SQL server compact版本更新
  3. centos 修改ssh默认端口号
  4. 什么原因导致挖掘机老自动熄火憋车熄火?
  5. 455. Assign Cookies - LeetCode
  6. WebStorm添加多个项目到当前工程目录
  7. Spring基于Java的JSR-250注解
  8. Docker入门(一) - 仓库、容器、镜像、数据卷
  9. linux find 命令详解
  10. 关于程序员30/35岁以后就写不了代码(没前途)的问题。