这个代码问题出在哪里,求大神帮忙看一下

运用栈实现十进制数转八进制。
#include"stdio.h"
#define max 10
typedef struct stack
{
int top;
int a[max];
}sqstack;

void initstack(sqstack &s)
{
s.top=0;
}

int full(sqstack s)
{
if(s.top==max) return 1;
else return 0;
}
int empty(sqstack s)
{
if(s.top==0) return 0;
else return 1;
}
void push(sqstack &s,int e)
{
if(full(s)==1) printf("full/n");
else
{
s.a[s.top]=e;
s.top++;
}
}
void pop(sqstack &s,int &e)
{
if(empty(s)==1) printf("empty");
else{
s.top--;
e=s.a[s.top];
}
}
void convesion(int n)
{
sqstack ss;
int stack(ss);
do{
push(ss,n%8);
n=n/8;
}while(n>0)
while(empty(ss)==0)
{
int x;
pop(ss,x);
printf("%d",x);
}
}
void main()
{
int n;
scanf("%d",&n);
conversion(n);

}

/****已经调试好,凡是有取地址&符号的地方都把&去掉********/

 #include"stdio.h"
#define max 10
typedef struct stack
    {
    int top;
    int a[max];
    }sqstack;

void initstack(sqstack s)
    {
    s.top=0;
    }

int full(sqstack s)
    {
    if(s.top==max) return 1;
    else return 0;
    }

int empty(sqstack s)
    {
    if(s.top==0) return 0;
    else return 1;
    }

void push(sqstack s,int e)
    {
    if(full(s)==1) printf("full/n");
    else 
        {
        s.a[s.top]=e;
        s.top++;
        }
    }

/****不要加取地址&符号,凡是有取地址&符号的地方都把&去掉****/
void pop(sqstack s,int e)
    {
    if(empty(s)==1) printf("empty");
    else{
        s.top--;
        e=s.a[s.top];
        }
    }

void convesion(int n)
    {

    sqstack ss;
    int stack(ss);
    do{
        push(ss,n%8);
        n=n/8;

        /**** while(n>0)后面确实分号 ; ****/
        }while(n>0);
            while(empty(ss)==0)
                {
                int x;
                pop(ss,x);
                printf("%d",x);
                }
    }


void main()
    {
    int n;
    scanf("%d",&n);
#if 0
     /****conversion(n);函数名写错了,应为convesion ****/
    //conversion(n);
#endif
    convesion(n);
    }