题目
设计一个顺序栈(包括初始化、进栈、出栈、判栈空4个操作),并利用这个栈设计实现一个将十进制数化为八进制数的程序
代码
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#define MaxSize 100
//顺序栈
typedef struct SqStack{
int data[MaxSize];//栈大小
int top;//栈顶指针
}SqStack;
void InitStack(SqStack &s);
bool StackEmpty(SqStack s);
bool Push(SqStack &s,int x);
bool Pop(SqStack &s,int &x);
int main(){
SqStack s;
InitStack(s);
int num;
printf("请输入一个十进制的数:");
scanf("%d",&num);
//转化入栈
while(num){
Push(s,num%8);
num = num / 8;
}
//输出
printf("输出八进制为:");
while(!StackEmpty(s)){
int x;
Pop(s,x);
printf("%d",x);
}
return 0;
}
void InitStack(SqStack &s){
s.top = -1;//初始化
}
bool StackEmpty(SqStack s){
if(s.top == -1)
return true;
else
return false;
//还有一种高级的写法
//return s.top == -1;
}
bool Push(SqStack &s,int x){
//判满
if(s.top==MaxSize-1)
return false;
s.data[++s.top] = x;
return true;
}
bool Pop(SqStack &s,int &x){
//判空
if(s.top == -1)
return false;
x = s.data[s.top--];
return true;
}
结果:
感受
复习一下栈的基础知识。如有错误,欢迎在评论区留言。