语言中有关【栈的顺序存储结构】的程序的有关问题

语言中有关【栈的顺序存储结构】的程序的问题
我刚学完栈,想学学栈的基本应用,于是写了下面这个小程序,可是好多错误,弄了好久怎么也调试不对,在课本上也没有例子可以参考参考,只有基本算法,不知怎么改了,请各位高手们帮帮忙,帮我改改看看,让我可以学习学习。错误很多,希望各位能耐心的看完,本人不胜感激。
特别不知道怎么输出栈中的元素,是要新申请一个循环控制变量,还是就用栈顶指针top来控制输出?都搞晕了



//栈的顺序存储方式的基本操作
#include<stdio.h>
#define ture 1
#define false 0
#define max_size 100
typedef struct ()
{
  int number[max_size];
  int top; 
}seqstack;
int Initstack();
int Pushstack();
int Popstack();
int Gettop();
int main()
{
seqstack Stack;
int n, m ,i,j;
Initstack(Stack);
printf("请输入要输入的数字的个数:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("请输入第%d个数字m:\n",i);
scanf("%d",&m);
Pushstack(Stack ,m);
}
for(Stack->top=0;Stack->top<n;Stack->top++)
{
 printf("%d\t",Stack->number[Stack->top]);
}
Popstack(Stack);
for(Stack->top=0;Stack->top<n-1;Stack->top++)
{
 printf("%d\t",Stack->number[Stack->top]);
}
Gettop( Stack);
for(Stack->top=0;Stack->top<n-1;Stack->top++)
{
 printf("%d\t",Stack->number[Stack->top]);
}
}

int Initstack(seqstack S)
{
 S->top=-1;
}
int Pushstack(seqstack *S,int m)
{
 if(S->top==max_size-1)
 { return false;
  printf("此栈已满");
 }
  S->top++;
  S->number[S->top]=m;
  return ture;
  printf("插入数字成功");
}
int Popstack(seqstack *S)
{
 int m
 if(S->top==-1)
 {return false;printf("此栈为空,无法再删除数字");}
 m=S->number[S->top];
 S->top--;
 return ture;
 printf("已成功删除数字%d",m);
}
int Gettop(seqstack *S)
{
int m
if(S->top==-1)
{return false;printf("此栈为空,无法再取栈顶数字");}
m=S->number[S->top];
return ture;
printf("已成功取出栈顶数字%d",m);
}


------解决方案--------------------
问题很多,逻辑没多大问题,语法问题太多。
修啊改过的代码:
C/C++ code

//栈的顺序存储方式的基本操作
#include<stdio.h>
#define max_size 100
struct SeqStack
{
    int number[max_size];
    int top;  
}TStack;

void Initstack(SeqStack*);
bool Pushstack(SeqStack*,int);
bool Popstack(SeqStack*);
bool Gettop(SeqStack*);
void ShowStack(SeqStack*);

int main()
{
    SeqStack *Stack=&TStack;
    int n, m ,i,j;
    Initstack(Stack);
    printf("请输入要输入的数字的个数:");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        printf("请输入第%d个数字m:\n",i);
        scanf("%d",&m);
        Pushstack(Stack ,m);
    }
    ShowStack(Stack);
    Popstack(Stack);
    ShowStack(Stack);
    Gettop( Stack);
    ShowStack(Stack);
    getchar();
    getchar();
    return 0;
}


void ShowStack(SeqStack*Stack)
{
    for(int i=0;i<=Stack->top;i++)
    {
        printf("%d\t",Stack->number[i]);
    }
    printf("\n");
}
void Initstack(SeqStack *S)
{
    S->top=-1;
}

bool Pushstack(SeqStack *S,int m)
{
    if(S->top==max_size-1)
    { 
        printf("此栈已满\n");
        return false;
    }
    S->number[++S->top]=m;
    printf("插入数字成功\n");
    return true;
}
bool Popstack(SeqStack *S)
{
    int m;
        if(S->top==-1)
        {
            printf("此栈为空,无法再删除数字\n");
            return false;
        }
        m=S->number[S->top--];
        printf("已成功删除数字%d\n",m);
        return true;
}
bool Gettop(SeqStack *S)
{
    int m;
        if(S->top==-1)
        {
            printf("此栈为空,无法再取栈顶数字\n");
            return false;
        }
        m=S->number[S->top];
        printf("已成功取出栈顶数字%d\n",m);
        return true;
}