顺序栈实现十进制转八进制

#include<stdio.h>
#include<stdlib.h>

#define MAXSIZE 100

typedef struct
{
    int* base; //栈底指针
    int* top;  //栈顶指针
    int maxsize; //栈的最大容量
}SqStack;

//栈的初始化
void InitStack(SqStack &s)
{
    s.base=(int*)malloc(MAXSIZE*sizeof(int));  //分配一个从s.base 开始的连续的空间
    if(!s.base)
    {
        exit(0);
    }
    s.top=s.base;        //s.top与s.base完全相同,只是变量名不同
    s.maxsize=MAXSIZE;
}

//入栈
bool push(SqStack &s,int e)
{
    //判断若栈满返回0
    if(s.top-s.base==MAXSIZE)
    {
        return false;
    }
    *s.top=e;
    s.top++;
    return true;
}

//出栈
bool  put(SqStack &s, int &e)
{
    //判断栈是否为空
    if(s.base==s.top)
    {
        return false;
    }
    int *p=s.top-1;
    e=*p;
    s.top--;
    return true;
}

void DisStack(SqStack s)
{
    int e;
    while(true)
    {
        put(s,e);
        printf("%d",e);
        if(s.top==s.base)
      {
          break;
      }
    }
}

int main()
{
    while(true)
    {
        SqStack s;
        int n,n1;
        printf("请输入数值: ");
        scanf("%d",&n);
        InitStack(s);
        while(n)
        {
            push(s,n%8);
            n=n/8;
        }
        printf("八进制: ");
        DisStack(s);
        printf("\n");
        printf("----------------\n");
        printf("结束?(1||0)\n");
        scanf("%d",&n1);
        if(n1==1)
        {
            break;
        }
    }
    return 0;
}

    原文作者:进制转换
    原文地址: https://blog.csdn.net/qq_37471920/article/details/82995330
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞