就是 把 指向结构体的 指针 压入栈里面去 不知道 怎样定义堆栈和传递参数 望您能给予帮助 谢谢。

2024-12-23 00:47:59
推荐回答(2个)
回答1:

假设你的结构体是struct A,那么,你的栈可以用STL库中的stack类模板。定义为:
stack S;
进栈出栈用
S.push(结构体指针);
S.pop();
栈顶元素:
S.top()

要加入头文件
#include

using namespace std;

补充:根据你的栈的定义,里面存储的元素都是整型的,整个要改啊,比方说定义要改成:
typedef struct{
Bitree *base;
Bitree *top;
int stacksize;
}SQSTACK;

Push函数要改成:
int Push(SQSTACK &S,Bitree e)

回答2:

注意a是push函数的局部变量,该函数执行完后,a变量将不复存在,所以返回其地址的做法是错误的。应该使用malloc动态分配内存。
#include
#include
#define MAXSIZE 5

typedef int datatype;
typedef struct
{
datatype stack[MAXSIZE];
int top;
}seqstack;

seqstack *push()
{

seqstack *a,*head;
a = (seqstack *)malloc(sizeof(seqstack));
datatype x;
head=a;
a->top=-1;
printf("请输入第1个数据,以0结束输入:");
a->top++;
scanf("%d",&x);

while (x!=0 && a->top {
a->stack[a->top++]=x;
printf("请输入第%d个数据,以0结束输入:",a->top+1);
scanf("%d",&x);
}
if(x!=0)
a->stack[a->top]=x;
else
a->top--;
if(a->top==-1)
return NULL;
else
return head;
}

void display()
{
/* int i; */
seqstack *push(),*p;
p=push();
if(p==NULL)
printf("该栈是一个空栈\n");
else
printf("%d\n",p->top);

}

void main()
{
display();
}
你的串号我已经记下,采纳后我会帮你制作