有点疑问像下面的代码,栈存储的东西放在了一个数组里 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++
struct stack{
int x,y,di;
};
他没有像数组这种可以存东西的,那他是怎么做到跟栈一样的功能的
【以下回答由 GPT 生成】
该代码中使用了数组来实现栈的功能。以下是对代码的解释:
首先,定义了一个结构体类型SNode
作为栈的结构,其中top
表示栈顶元素的下标,data
是一个数组,用于存储栈的元素。
然后,定义了一个指向SNode
类型的指针Stack
作为对栈的操作。
接着,实现了Push
函数,用于将元素压入栈中。在Push
函数中,会首先判断栈是否已满,如果栈已满则输出提示信息并返回;如果栈未满,则将元素插入到栈顶的下一个位置,并将栈顶指针增加1。
在main
函数中,首先创建一个Stack
类型的指针p
,然后通过调用malloc
函数为p
分配内存空间,并将栈顶指针top
初始化为0。
接着,从用户输入中读取元素个数item
,然后循环读取item
个整数,将每个整数作为参数调用Push
函数将其压入栈中。
总结来说,该代码使用数组实现了一个简单的栈结构,并提供了将元素压入栈的功能。栈的数据结构通过SNode
结构体定义,栈的操作通过Stack
类型的指针实现。