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

xiaoxiao2021-04-18  127

#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://www.6miu.com/read-4820249.html

最新回复(0)