鱼C论坛

 找回密码
 立即注册
查看: 1551|回复: 2

C语言栈求助

[复制链接]
发表于 2021-10-25 14:27:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

源码:
#include <stdio.h>
#define MaxSize 100                                //顺序栈的初始分配空间大小
typedef char ElemType;                        //假设顺序栈中所有元素为char类型
typedef struct
{        ElemType data[MaxSize];                //保存栈中元素
        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[st.top] = x;
    printf("ok\n");
        }
}

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

int GetTop(SqStack st,ElemType &x)        //取栈顶元素x
{        if (st.top==-1)                                        //栈空
                return 0;
        else
        {        x=st.data[st.top];
                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);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-10-25 15:15:39 | 显示全部楼层
好家伙那个函数里面我少打了一个&,加上就能累加了.
但是有大佬可以说说这是为什么嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

楼主好好学习实参和形参
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-7 06:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表