数据结构-栈--进制转换
来源:互联网 发布:中华人软件下载 编辑:程序博客网 时间:2024/05/22 17:08
#include<stdio.h>#include<stdlib.h>#define STACK_INIT_SIZE 10 /* 存储空间初始分配量 */#define STACK_INCREMENT 2 /* 存储空间分配增量 */#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW 0typedef struct SqStack{int *base; /* 在栈构造之前和销毁之后,base 的值为 NULL */int *top; /* 栈顶指针 */int stacksize; /* 当前已分配的存储空间,以元素为单位 */}SqStack; /* 顺序栈 */void InitStack(SqStack *s){ /* 构造一个空栈 S */s->base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));if(!s->base)exit(OVERFLOW); /* 存储分配失败 */s->top=s->base;s->stacksize=STACK_INIT_SIZE;}int StackEmpty(SqStack s){ /* 若栈 S 为空栈,则返回 TRUE,否则返回 FALSE */if(s.top==s.base)return TRUE;elsereturn FALSE;}int StackLength(SqStack s){ /* 返回 S 的元素个数,即栈的长度 */return s.top-s.base;}void Push(SqStack *s,int e){ /* 插入元素 e 为新的栈顶元素 */if(s->top-s->base>=s->stacksize) /* 栈满,追加存储空间 */{s->base=(int *)realloc(s->base,(s->stacksize+STACK_INCREMENT)*sizeof(int));if(!s->base)exit(1); /* 存储分配失败 */s->top=s->base+s->stacksize;s->stacksize+=STACK_INCREMENT;}*(s->top)++=e;//*s->top=e;s->top++;}int Pop(SqStack *s,int *e){ /* 若栈不空,则删除 S 的栈顶元素,用 e 返回其值,并返回 OK;否则返回 ERROR */if(s->top==s->base)return ERROR;*e=*--s->top;return OK;}void DestoryStack(SqStack *s){if(s->base)free (s->base);}void conversion(int i){ /* 对于输入的任意一个非负 10 进制整数,打印输出与其等值的 16 进制数 */SqStack s;int n; /* 非负整数 */int e;InitStack(&s); /* 初始化栈 */printf("将 10 进制整数 n 转换为 %d 进制数\n 请输入 n( >0 ):",i);scanf("%d",&n); /* 输入非负十进制整数 n */while(n) /* 当 n 不等于 0 */{Push(&s,n%i); /* 入栈 n 除以 i 的余数(i 进制的低位) */n=n/i;}while(!StackEmpty(s)) /* 当栈不空 */{Pop(&s,&e); /* 弹出栈顶元素且赋值给 e */if(e<=9)printf("%d",e);elseprintf("%c",e+55); /* 大于 9 的余数,输出相应的字符*/}printf("\n");DestoryStack(&s);}int menu(){int i;while(1){puts("\t*************进制转换**************");puts("\t\t1. 10进制转换成2进制");puts("\t\t2. 10进制转换成8进制");puts("\t\t3. 10进制转换成16进制");puts("\t\t0. 退出");printf("\t请输入指令:");scanf("%d",&i);system("cls");switch(i){case 1:conversion(2); break;case 2:conversion(8); break;case 3:conversion(16); break;case 0:return 0;}}}int main(){menu();system("pause");return 0;}
阅读全文
0 0
- 数据结构-栈--进制转换
- 数据结构 栈的应用 进制转换
- 【数据结构】 利用栈实现进制转换
- 【数据结构】栈应用之进制转换
- 数据结构栈应用之进制转换
- 进制转换 (数据结构 + 栈)
- 数据结构之 栈 实现进制转换
- 数据结构之栈一:进制转换
- 数据结构栈之进制转换
- 数据结构 顺序栈进行进制转换
- 数据结构之进制转换
- 数据结构进制转换源代码
- 1474 数据结构:进制转换
- 数据结构实验之栈一:进制转换 简单栈
- 数据结构实验之栈一:进制转换(栈)
- 企业常见笔试题目---数据结构栈与进制转换
- 数据结构实验之栈一:进制转换
- C++数据结构--栈的应用--进制转换
- 基于增量的矩阵聚类
- hdu 5903
- 【Mybatis学习】Mybatis框架中的动态sql
- GitHub 上开源的区块链项目 90% 死亡了
- 【Linux】Shell
- 数据结构-栈--进制转换
- 质因子分解问题
- 打印100~200 之间的素数
- 习题 6 6.6
- 1001.a+b Format
- 面向对象六大基本原则
- win10下virtualbox中ubuntu和win10建立共享文件夹的方法
- 存储管理器
- 高斯消元(模板)