zoukankan      html  css  js  c++  java
  • 栈实现二进制转十进制

    代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    #define STACK_INIT_SIZE 20
    #define STACKINCREMENT  10
    
    typedef char ElemType;
    typedef struct {
        ElemType *base;
        ElemType *top;
        int StackSize;
    }sqStack;
    void InitStack(sqStack *s){
        s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType));
        if( !s->base ){
            exit(0);
        }
        s->top = s->base;
        s->StackSize = STACK_INIT_SIZE;
    }
    void push(sqStack *s,ElemType e) {
        if( s->top - s->base >= s->StackSize){
            s->base = (ElemType *)realloc(s->base,(s->StackSize+STACKINCREMENT)*sizeof(ElemType));
            if( !s->base ){
                exit(0);
            }
        }
        *(s->top) = e;
        s->top++;
    }
    void pop(sqStack *s,ElemType *e){
        if( s->top == s->base){
            return;
        }
        *e = *--(s->top);
    }
    int Stacklen(sqStack s){
        return (s.top-s.base);
    }
    int main()
    {
        ElemType c;
        sqStack s;
        int i,len,sum=0;
    
        InitStack(&s);
    
        printf("输入二进制数,#代表结束
    ");
    
        scanf("%c",&c);
    
        while(c != '#'){
            push(&s,c);
            scanf("%c",&c);
        }
        getchar(); // 将'
    '缓冲区去掉
    
        len = Stacklen(s);
    
        printf("当前栈的长度为:%d
    ",len);
    
        for(i=0;i<len;i++){
            pop(&s,&c);
            sum = sum + (c-48)*pow(2,i);
        }
        printf("转换为十进制数为:%d
    ",sum);
        return 0;
    }
  • 相关阅读:
    class和struct
    类内初始值(c++11)
    默认初始化、值初始化
    聚合类
    对象
    排序算法的比较
    快速排序
    堆排序
    ubunu设置java命令为全局的命令-添加到全局环境变量
    Mina笔记
  • 原文地址:https://www.cnblogs.com/ncuhwxiong/p/7056715.html
Copyright © 2011-2022 走看看