C语言栈的实现进制转换
来源:互联网 发布:以利天诚大数据 编辑:程序博客网 时间:2024/04/30 15:12
栈是限定仅在表尾进行操作的线性表。因此,对栈来说,表尾端有其特殊含义,成为栈顶,相应地,表头端称为栈底。下面用C实现栈的基本操作以及利用栈来实现一个进制转换程序
#include <iostream>#include <stdio.h>#include <stdlib.h>using namespace std;#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef int SElemType;typedef struct{ SElemType * base; SElemType * top; int stacksize;}SqStack;int InitStack(SqStack &S){ S.base = (SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType)); if(!S.base) return 0; S.top = S.base ; S.stacksize = STACK_INIT_SIZE; return 1;}//添加栈元素int Push(SqStack &S,SElemType e){ if(S.top-S.base >= S.stacksize) { S.base = (SElemType * )realloc(S.base,(S.stacksize+STACK_INIT_SIZE)*sizeof(SElemType)); if(!S.base) return 0; S.top = S.base + S.stacksize; S.stacksize += STACK_INIT_SIZE; } * S.top = e; S.top ++ ; return 1;}int Pop(SqStack &S,SElemType &e){ if(S.top<=S.base) return -1; e = * --S.top; return 1;}int GetTop(SqStack S,SElemType &e){ if(S.top<=S.base) return -1; e = * (S.top-1); return 1;}int StackEmpty(SqStack S){ if(S.base == S.top) return 1; else return 0;}int main(){ cout << "进制转换程序" << endl; SqStack S; InitStack(S); int n,m; cout << "请输入一个整数" << endl; scanf("%d",&n); cout << "请输入进制,用整数表示" << endl; scanf("%d",&m); while(n) { Push(S,n%m); n = n/m; } int e; while(!StackEmpty(S)) { Pop(S,e); printf("%d",e); } return 0;}
测试结果:
0 0
- C语言栈的实现进制转换
- 进制转换算法的C语言实现
- 用C语言实现进制转换
- C语言实现进制转换
- c语言之进制转换(栈实现)
- 数据结构 栈的应用任意进制转换(c语言实现)
- 4.c语言的进制转换
- C语言基础 进制的转换
- C语言实现大小写字母的转换
- c语言:顺序栈的应用-进制转换
- C语言通过函数实现 itoa()的功能 将整数转换成字符串 并实现进制转换
- C语言简单实现进制互相转换
- 简单C语言递归实现进制转换并输出
- 进制转换算法及C语言实现
- C语言实现任意进制的转换,主要注意代码的小技巧
- C语言:利用栈实现进制间转换
- C语言-进制转换
- C语言 进制转换
- 《精彩绝伦的CSS》——选择器(一)简写属性值
- 对象池
- 模拟按优先数调度算法(C++)
- 21:三角形最佳路径问题
- 阻塞、非阻塞、异步、同步以及select/poll和epoll
- C语言栈的实现进制转换
- Linux:password already has been used!
- 动态规划练习题-9(移动路线)
- about云之hadoop零基础
- 小白训练day2
- python导入模块的4种方法
- Windows系统功能模拟 C++(EasyX插件)—— 6th 界面绘制(四)
- Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'错误解决方案
- 26:滑雪