迷宫问题的前置步骤(栈)

有点疑问像下面的代码,栈存储的东西放在了一个数组里 ElementType data[MAXsize];

#include<stdio.h>
#include<malloc.h>
#define MAXsize 100
typedef int ElementType;
typedef struct snode{
    int top;
    ElementType data[MAXsize];
}SNode,*Stack;
void Push(Stack p,ElementType item){//入栈 
    if(p->top==MAXsize-1){
        printf("栈满");
        return;
    }else{ 
        (p->top)++;
        p->data[(p->top)]=item;
//        p->data[++(p->top)]=item; 
        return;
    } 
}
int main(){
    Stack p;
    p=(Stack)malloc(sizeof(SNode));
    p->top=0;
    ElementType item,i,j;
    scanf("%d",&item);
    for(i=0;i<item;i++){
        scanf("%d",&j);        
        Push(p,j);
        p->top++;        
    }
}

我模仿下面的代码写,图中是用的c++

img


它的栈的结构体是长这个样子

struct stack{
    int x,y,di;
};

他没有像数组这种可以存东西的,那他是怎么做到跟栈一样的功能的

【以下回答由 GPT 生成】

该代码中使用了数组来实现栈的功能。以下是对代码的解释:

  1. 首先,定义了一个结构体类型SNode作为栈的结构,其中top表示栈顶元素的下标,data是一个数组,用于存储栈的元素。

  2. 然后,定义了一个指向SNode类型的指针Stack作为对栈的操作。

  3. 接着,实现了Push函数,用于将元素压入栈中。在Push函数中,会首先判断栈是否已满,如果栈已满则输出提示信息并返回;如果栈未满,则将元素插入到栈顶的下一个位置,并将栈顶指针增加1。

  4. main函数中,首先创建一个Stack类型的指针p,然后通过调用malloc函数为p分配内存空间,并将栈顶指针top初始化为0。

  5. 接着,从用户输入中读取元素个数item,然后循环读取item个整数,将每个整数作为参数调用Push函数将其压入栈中。

总结来说,该代码使用数组实现了一个简单的栈结构,并提供了将元素压入栈的功能。栈的数据结构通过SNode结构体定义,栈的操作通过Stack类型的指针实现。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^