#include<iostream>
#include<stdlib.h>
#include<malloc.h>
#include<stdio.h>
#define max 100
using namespace std;
typedef struct
{
int stack[max];
int top;
}seqstack;
void init(seqstack *l)
{
l->top=-1;
}
int empty(seqstack s)
{
if(s.top==-1)
{
printf("栈空");
return 1;
}
else
{
printf("栈没空");
return 0;
}
}
int top(seqstack l,int *s)
{
if(l.top<0)
{
printf("栈已空!
");
return 0;
}
{
*s=l.stack[l.top];
return 1;
}
}
int push(seqstack *s,int x)
{
if(s->top>=max)
{
printf("栈已满,不能进栈!
");
return 0;
}
else
{
s->top++;
s->stack[s->top]=x;
return 1;
}
}
int pop(seqstack *s,int e)
{
if(s->top==-1)
{
printf("栈已空");
return 0;
}
else
{
e=s->stack[s->top];
printf("%d",e);
s->top--;
return 1;
}
}
void dis(seqstack l)
{
while(l.top>-1)
{
printf("%d ",l.stack[l.top]);
l.top--;
}
printf("
");
}
int main()
{
seqstack l;
int e;int n;int x;
printf("请输入一个数:");
scanf("%d",&n);
//seqstack *s
//s=(seqstack*)malloc(sizeof(seqstack))
//必须要动态分配否则指针用完被释放
//
//使用指针只是复制一份形参 在被调函数运行完就会失效
//但是取址是址传递 改变了值
init(&l);
while(n>0)
{
e=n%8;
push(&l,e);
n=n/8;
}
while(l.top>=0)
{
pop(&l,x);
}
return 0;
}
//测试数据3467