zoukankan      html  css  js  c++  java
  • 进制转换的栈实现

    #include<stdio.h>
    #include<stdlib.h>
    #define STACK_INIT_SIZE 100
    #define STACKINCREMENT 10
    typedef struct {
        int *base;
        int *top;
        int stackzize;
    }SqStack;
    int InitStack(SqStack &S) {
        S.base = (int *)malloc(STACK_INIT_SIZE * sizeof(int));
        if(!S.base) exit(0);
        S.top = S.base;
        S.stackzize = STACK_INIT_SIZE;
        return 1;
    }
    int GetTop(SqStack S,int &e){
        if(S.top == S.base) return 0;
        e = *(S.top-1);
        return 1;
    }
    int Push(SqStack &S,int e){
        if(S.top - S.base >= S.stackzize){
            S.base = (int *)realloc(S.base, 
            (S.stackzize + STACKINCREMENT) * sizeof(int));
            if(!S.base) exit(0);
            S.top = S.base + S.stackzize;
            S.stackzize += STACKINCREMENT;
        }
        *S.top++ = e;
        return 1;
    }
    int Pop(SqStack &S,int &e){
        
        if (S.top == S.base) return 0;
        e = * --S.top;
        return 1;
    }
    int StackEmpty(SqStack S){
        if (S.top == S.base) return 1;
            else return 0;
    }
    int main(){
        int N,e;
        SqStack S;
        InitStack(S);
        scanf("%d",&N);
        while(N){
            Push(S,N%8);
            N/=8;
        }
        while(!StackEmpty(S)){
            Pop(S,e);
            printf("%d",e);
        }
    }

    这个是比较简单的一个栈实现   八进制—>十进制, 其目的是给入门的同学们源码,方便理解学习

  • 相关阅读:
    bzoj3996
    bzoj3157 3516
    bzoj1937
    bzoj1532
    bzoj3572
    bzoj1453
    bzoj3205
    bzoj2595
    关于高斯消元解决xor问题的总结
    linux查找和替换命令
  • 原文地址:https://www.cnblogs.com/zhangzimu/p/6873344.html
Copyright © 2011-2022 走看看