算法:数制转换(栈的应用)-数据结构(6)
2017-05-16 23:55
393 查看
一、算法描述
将一个数按照想要的进制,进行转换。用到的栈的原因是,计算出来的数是从第一位开始的,为了方便输出,进行的栈的运用。其实就是逆序输出P48二、数据结构与算法
1、数据结构(栈)
#define STACK_INIT_SIZE 100//存储空间初始分配量#define STACKINCREMENT 10//存储空间分配增量
typedef struct{
SElemType *base;//栈的首地址指向的元素指针
SElemType *top;//栈顶指针 **注意这个栈顶指针指向的是栈中的顶 这个顶是元素为空的
int stackSize;//当前已分配的存储空间,以元素为单位
}SqStack;
Status InitStack(SqStack &S){
//构造一个空栈S
S.base = (SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType));
if (!S.base)
{
return OVERFLOW;
}
S.top = S.base;
S.stackSize = STACK_INIT_SIZE;
return OK;
}
Status GetTop(SqStack S, SElemType &e){
//若栈不空,则返回S的栈顶元素,并返回OK;否则返回ERROR
if (S.base == S.top)
{
return ERROR;
}
e = *(S.top - 1);
return OK;
}
Status Push(SqStack &S, SElemType e){
//e元素进栈
if (S.top - S.base >= S.stackSize)
{
//栈满了,追加存储空间
S.base = (SElemType*)realloc(S.base, (S.stackSize + STACKINCREMENT)*sizeof(SElemType));
if (S.base == NULL)
{
return OVERFLOW;
}
S.top = S.base + S.stackSize;
S.stackSize += STACKINCREMENT;
}
*S.top++ = e;
return OK;
}
Status Pop(SqStack &S, SElemType &e){
//出栈
if (S.top == S.base)
{
return ERROR;
}
e = *--S.top;
return OK;
}
bool StackEmpty(SqStack S){
return S.base == S.top;
}
2、算法
//数制转换 p48 void conversion(int inputNum,int formatNum){ //将inputNum数字 进行formatNum进制转换 SqStack stack; InitStack(stack); while (inputNum) { Push(stack, inputNum%formatNum); inputNum /= formatNum; } //打印输出的进制数 while (!StackEmpty(stack)) { //栈还没空的情况下 int e; Pop(stack, e); printf("%d", e); } }
三、执行
conversion(1348, 8);输出:
2504请按任意键继续. .
相关文章推荐
- 【数据结构与算法】第三章 表c实现应用一-----------多项式
- 数据结构之堆栈模拟应用(算法3.1)
- 【数据结构与算法】treemap应用 排序
- 数据结构中关键路径算法的实现与应用
- 算法:迷宫求解(栈的应用)-数据结构(8)
- 【数据结构与算法】数组应用4:多项式计算Java版
- 数据结构与算法(Java描述)-5、循环链表仿真链表以及循环链表应用
- 数据结构中关键路径算法的实现与应用
- 算法:括号匹配(栈的应用)-数据结构(7)
- 【数据结构与算法】栈ADT结构应用的例子
- 【数据结构与算法】数组应用3:稀疏矩阵压缩(Java实现)
- 【数据结构与算法基础】栈及其应用后缀、中缀表达式 / Stack and postfix/infix expression
- 数据结构与算法学习笔记——堆栈及其应用(10以内简单四则计算器)
- 经典数据结构与算法在经典软件(linux kernel)中的应用
- 数据结构与算法----数学应用之一元多项式
- 【数据结构与算法】数组应用1:矩阵乘法(Java实现)
- 【数据结构与算法】数组应用2:矩阵转置(Java实现)
- 栈的基本应用-数制转换-数据结构
- [数据结构与算法]栈的应用:计算 2*2+(10-2)/(101-50*2)*3-2+5 表达式的值
- 数据结构与算法面试题汇编(1)- 链表的操作与应用