码迷,mamicode.com
首页 > 编程语言 > 详细

ex5.“栈”+进制转换算法

时间:2016-03-06 20:53:22      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:

#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#include<stdio.h>
#include<stdlib.h>
typedef int SElemType;
typedef struct{
    SElemType *base,*top;
    int stacksize;
}SqStack;
int InitStack(SqStack &S)
{
    S.base = (SElemType*)malloc(sizeof(SElemType) * STACK_INIT_SIZE);
    if(!S.base) exit(-2);
    S.base = S.top;
    S.stacksize = STACK_INIT_SIZE;
    return 1;
}//
int GetTop(SqStack S,SElemType &e)
{
    if(S.base == S.top) return -1;
    e = *(S.top-1);
    return 1;
}
int Push(SqStack &S,SElemType e)
{
    if(S.top - S.base >= S.stacksize)
    {
        S.base = (SElemType*)realloc(S.base,sizeof(SElemType) * (STACKINCREMENT + S.stacksize));
        if(!S.base) exit(-2);
        S.top = S.base + S.stacksize;
        S.stacksize += STACKINCREMENT;
    }
    *S.top++ = e;
    return 1;
}
int Pop(SqStack &S,SElemType &e)
{
    if(S.top <= S.base) return -1;
    e = *(--S.top);
    return 1;
}
void conversion(int e,int i)
{
    SqStack s;
    InitStack(s);
    printf("十进制%d的%d进制数为:",e,i);
    while(e)
    {
        Push(s,e % i);
        e = e / i;
    }
    
    while(s.top != s.base)
    {
        int temp;
        Pop(s,temp);
        printf("%d",temp);
    }
    printf("\n");
}
int main()
{
    SqStack s1;
    InitStack(s1);
    Push(s1,4);
    Push(s1,10);int i;
    GetTop(s1,i);
    printf("%d",i);
    printf("-------------------\n");
    conversion(1348,8);
    return 1;
}
    

 

ex5.“栈”+进制转换算法

标签:

原文地址:http://www.cnblogs.com/minemine/p/5248368.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!