假设你的结构体是struct A,那么,你的栈可以用STL库中的stack类模板。定义为:
stack
进栈出栈用
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)
注意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();
}
你的串号我已经记下,采纳后我会帮你制作