【数据结构】用栈实现数制的转换
2015-11-10 15:02
423 查看
用栈实现数制的转换.cpp
#include<iostream>
using namespace std;
typedef int SElemType;
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
void InitStack(SqStack &S)//构造一个空栈
{
S.base = (SElemType *)malloc(20*sizeof(SElemType));
if (!S.base)
{
cout << "存储分配失败!" << endl;
exit(0);
}
S.top = S.base;
S.stacksize = 20;
}
void Push(SqStack &S, SElemType e)//进栈
{
if ((S.top - S.base) >= S.stacksize)
{
S.base = (SElemType *)malloc((S.stacksize+10 )* sizeof(SElemType));//如果栈满,申请新空间
if (!S.base)
{
cout << "存储分配失败!" << endl;
exit(0);
}
S.top = S.base + S.stacksize;
S.stacksize+=10;
}
*S.top++ = e;
}
int Pop(SqStack &S, SElemType &e)//出栈
{
if (S.top == S.base) return 0;
e = *--S.top;
cout << e;
return 0;
}
void conversion()
{
SqStack S;
InitStack(S);
int N, M;
cout << "请输入要转换N的数及数制M:" << endl;
cin >> N >> M;
cout<<"将"<<N<<"转换成"<<M<<"进制后,为:"<<endl;
while (N)
{
Push(S, N%M);
N = N/M;
}
int e;
while (S.top!=S.base)
Pop(S, e);
cout<<endl;
}
int main()
{
conversion();
return 0;
}
相关文章推荐
- 【数据结构】用栈实现括号匹配的检验
- 【数据结构】顺序栈的基本操作
- 【数据结构】循环链表的建立与输出
- 【数据结构】单链表的基本操作
- 【数据结构】顺序表的基本操作
- 【数据结构实验】编制一个程序求解迷宫通路
- 【数据结构实验】约瑟夫环的实现
- 数据结构和内存中堆和栈的区别
- 线性表
- 数据结构之栈的c语言实现
- 数据结构与算法
- 数据结构与算法
- 关于数据结构三种简单的排序总结
- 数据结构与算法javascript描述(五) 选择排序
- 数据结构与算法javascript描述(四) 冒泡排序
- 复数类Complex的Java实现(数据结构 例 1-4)
- 【数据结构与算法分析】2.1 斐波拉切数列算法实现
- 数据结构实验之二叉树一:树的同构
- 数据结构 文学研究助手(AC自动机)
- 数据结构基础5.4:堆(HEAP)的基本操作(插入与删除)