写在stack.h头文件中
源程序
#ifndef STACK
#define STACK
#include "stdio.h"
typedef char TElemType;
typedef struct BiTNode
{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
typedef struct LinkNode
{
BiTree data;
struct LinkNode *next;
}Node;
typedef struct{
Node *top;
}LiStack;
void InitStack(LiStack &s)
{
s.top=(Node *)malloc(sizeof(Node));
if(!s.top) return;
s.top->next=NULL;
}
int StackEmpty(LiStack s)
{
if(s.top->next==NULL) return 1;
else
return 0;
}
void Push(LiStack &s,BiTree e)
{
Node *p;
p=(Node *)malloc(sizeof(Node));
if(!p)
return ;
p->data=e;
p->next=s.top->next;
s.top->next=p;
}
void Pop(LiStack &s,BiTree &e)
{
Node *p;
if(StackEmpty(s)) return;
else
{
p=s.top->next;
e=p->data;
s.top->next=p->next;
free(p);
}
}
void GetTop(LiStack &s,BiTree &e)
{
Node *p;
if(StackEmpty(s)) return;
else
{
p=s.top->next;
e=p->data;
//s.top->next=p->next;
//free(p);
}
}
#endif