大炸炸 发表于 2021-10-25 14:27:40

C语言栈求助

为啥我push函数每次输出的st.top都是0呀

源码:
#include <stdio.h>
#define MaxSize 100                                //顺序栈的初始分配空间大小
typedef char ElemType;                        //假设顺序栈中所有元素为char类型
typedef struct
{        ElemType data;                //保存栈中元素
        int top;                                        //栈顶指针
} SqStack;                                                //顺序栈类型

void InitStack(SqStack &st)                //初始化顺序栈st
{
        st.top=-1;
}
void DestroyStack(SqStack st)        //销毁顺序栈st
{
        while(st.top!=-1)
        {
               
        }

}

int Push(SqStack st,ElemType x)        //进栈元素x
{       
    if(st.top == MaxSize -1)
    {
      printf("栈满");
    }
        else
        {
    st.top=st.top+1;
    printf("%d",st.top);
    st.data = x;
    printf("ok\n");
        }
}

int Pop(SqStack &st,ElemType &x)        //出栈元素x
{       
        if(st.top==-1)
        printf("栈空");
        x = st.data;
        st.top--;
        printf("ok\n");
}

int GetTop(SqStack st,ElemType &x)        //取栈顶元素x
{        if (st.top==-1)                                        //栈空
                return 0;
        else
        {        x=st.data;
                return 1;
        }
}

int StackEmpty(SqStack st)                //判断栈是否为空
{        if (st.top==-1) return 1;
        else return 0;
}
int main()             //主函数
{        SqStack st;
        ElemType e;
        printf("初始化栈st\n");
        InitStack(st);
        printf("栈%s\n",(StackEmpty(st)==1?"空":"不空"));
        printf("a进栈\n");Push(st,'a');
        printf("b进栈\n");Push(st,'b');
        printf("c进栈\n");Push(st,'c');
        printf("d进栈\n");Push(st,'d');
        printf("栈%s\n",(StackEmpty(st)==1?"空":"不空"));
        GetTop(st,e);
        printf("栈顶元素:%c\n",e);
        printf("出栈次序:");
        while (!StackEmpty(st))                //栈不空循环
        {        Pop(st,e);                                //出栈元素e并输出
                printf("%c ",e);
        }
        printf("\n销毁栈st\n");
        DestroyStack(st);
}

大炸炸 发表于 2021-10-25 15:15:39

好家伙那个函数里面我少打了一个&,加上就能累加了.
但是有大佬可以说说这是为什么嘛

jhq999 发表于 2021-10-25 20:13:44

大炸炸 发表于 2021-10-25 15:15
好家伙那个函数里面我少打了一个&,加上就能累加了.
但是有大佬可以说说这是为什么嘛

楼主好好学习实参和形参
页: [1]
查看完整版本: C语言栈求助