• 【 数据结构(C语言)】栈的应用(一)数值转换


    1.十进制转换到d进制

    /**
    **  2017.11.4
    **  Ahthor:799
    **  数制转换
    **
    ***/
    #include <bits/stdc++.h>
    using namespace std;
    #define STACK_INIT_SIZE 100 /// 存储空间初始分配
    #define STACK_INCREMENT 10 /// 存储空间分配增量
    #define ElemType int
    #define Status int
    #define OK 1
    #define ERROR -1
    #define OVERFLOW -2
    typedef struct
    {
        ElemType *base;
        ElemType *top;
        int stacksize;
    } SqStack;
    Status InitStack (SqStack &S)
    {
        S.base = (ElemType * )malloc(STACK_INIT_SIZE * sizeof(ElemType));
        if (!S.base) exit(OVERFLOW);
        S.top = S.base;
        S.stacksize = STACK_INIT_SIZE;
        return OK;
    }
    Status DestroyStack(SqStack &S)
    {
        for (ElemType *index = S.base; index != S.top; index ++)
        {
            free(index);
        }
        free(&S);
        return OK;
    }
    Status ClearStack(SqStack &S)
    {
        for (ElemType *index = S.base+1; index != S.top; index ++)
        {
            free(index);
        }
        S.top = S.base;
        return OK;
    }
    Status IsEmptyStack(SqStack &S)
    {
        if (S.base == S.top) return true;
        else return false;
    }
    Status LengthStack(SqStack &S)
    {
        return S.top - S.base;
    }
    ElemType  GetTop(SqStack &S)
    {
        if (S.top == S.base) return ERROR;
        ElemType e = *(S.top - 1);
        return e;
    }
    Status Push(SqStack &S,ElemType &e)
    {
        if (S.top - S.base >= S.stacksize)
        {
            S.base = (ElemType *) realloc (S.base,(S.stacksize + STACK_INCREMENT) * sizeof(ElemType));
            if (!S.base)exit(OVERFLOW);
            S.top = S.base + S.stacksize;
            S.stacksize += STACK_INCREMENT;
        }
        *S.top = e;
        S.top ++;
        return OK;
    }
    Status Pop(SqStack &S, ElemType &e)
    {
        if (S.top == S.base) return ERROR;
        e = * --S.top;
        return OK;
    }
    Status TrverseStack(SqStack &S)
    {
        for (ElemType *index = S.base; index != S.top; index ++)
        {
            cout<<*index<<" ";
        }
        cout<<endl;
        return OK;
    }
    int main()
    {
        SqStack * St = (SqStack *) malloc(sizeof(SqStack));
        InitStack (*St);
        int n,d;
        cin>>n>>d;
        while (n)
        {
            int tmp = n%d;
            Push(*St,tmp);
            n /= d;
        }
        while (!IsEmptyStack(*St))
        {
            int num;
            Pop(*St,num);
            cout<<num;
        }
        cout<<endl;
        return 0;
    }
    
    
    
    
  • 相关阅读:
    Linux学习第一天:SecureCRT连接Linux常见错误
    函数
    文件a.txt内容:每一行内容分别为商品名字,价钱,个数,求出本次购物花费的总钱数
    文件处理
    自定义函数
    三级菜单
    写一个循环,不断的问客户想买什么 ,当用户选择一个商品编号,就把对应的商品加入购物车 ,最终用户输入q退出时,答应购物车的商品
    9*9乘法表
    打印列表的每个元素和索引值
    names里面有3个2,返回第2个2的索引值
  • 原文地址:https://www.cnblogs.com/sxy-798013203/p/7783111.html
Copyright © 2020-2023  润新知