首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-04-14 
语言中有关【栈的顺序存储结构】的程序的问题我刚学完栈,想学学栈的基本应用,于是写了下面这个小程序,可是好

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

热点排行
Bad Request.