注册 登录
编程论坛 C语言论坛

关于栈的问题,在入栈后读栈的时候显示的是随机数

knkn 发布于 2022-06-28 19:28, 1184 次点击
#include <stdio.h>
#define maxsize 5
typedef struct
{
    int Data[maxsize];
    int top;
}Stack;
void ini(Stack *L)
{
    L->top = 0;
}
int Isfull(Stack* L)
{
    if (L->top == (maxsize))
        return 1;
    else return 0;
}
int Isempty(Stack* L)
{
    if (L->top == 0)
        return 1;
    else return 0;
}
void push(Stack* L, int x)
{
    if (Isfull(L))
        printf("栈已满\n");
    else
    {
        L->Data[L->top] = x;
        L->top++;
    }
}
void pop(Stack* L)
{
    if (Isempty(L))
        printf("栈是空的\n");
    else
    {
        L->top--;
    }
}
void read(Stack* L)
{
    int i;
    if (Isempty(L))
        printf("栈为空\n");
    else {
        for (i = ((L->top)-1); i >= 0; i--)
            printf("%d\t", L->Data[L->top]);
    }
}
int main()
{
    Stack L;
    int i;
    char x;
    int m = 1;
    ini(&L);
    while (m)
    {
        printf("入栈1,出栈2,读栈元素3,退出0:\n");
        scanf_s("%d", &i);
        if (i == 1) {
            printf("请输入要入栈的数:\n");
            scanf_s("%d", &x);
            push(&L, x);
        }
        else if (i == 2)
            pop(&L);
        else if (i == 3)
            read(&L);
        else if (i == 0)
        {
            m = 0;
            printf("程序结束\n");
        }
        printf("\n");
    }
    return 0;
}
3 回复
#2
knkn2022-06-28 19:33
把main中x换成int类型输出也是错的
#3
rjsp2022-06-29 08:32
L->Data[L->top] 改为 L->Data[i]
#4
knkn2022-06-29 08:36
回复 3楼 rjsp
感谢
1