Create&TraverseBiTree
程序已就绪,可直接编译运行
#include
#define OK 1 #define TRUE 1 #define ERROR 0 #define FALSE 0 #define OVERFLOW -1
#define STACK_INIT_SIZE 200; #define STACKINCERMENT 20;
typedef int status; typedef char TElemType;
//-----二叉树的二叉链表存储表示----- typedef struct BiTNode {
TElemType data;
struct BiTNode *lchild,*rchild;//左右孩子指针 }BiTNode,*BiTree;//*BiTree表示指向该结构体的指针
//-----单链队列-----队列的链式存储结构
typedef BiTreeQElemType; typedef struct QNode {
QElemType data; struct QNode *next; }QNode,*QueuePtr;
typedef struct {
QueuePtr front; QueuePtr rear; }LinkQueue;
//------队列基本操作------
status InitQueue(LinkQueue&Q)
{//构造一个空队列Q
Q.front=(QueuePtr)malloc(sizeof(QNode)); Q.rear=Q.front;
if(!Q.front)exit(OVERFLOW); Q.front->next=NULL; return OK; }//InitQueue
status EnQueue(LinkQueue&Q,QElemType e) {//插入元素e为Q的新队尾元素 QueuePtr p;
p=(QueuePtr)malloc(sizeof(QNode)); if(!p)exit(OVERFLOW); p->data=e; p->next=NULL; Q.rear->next=p; Q.rear=p; return OK; }//EnQueue
status DeQueue(LinkQueue&Q,QElemType&e)
{//若队列不空,则删除Q的队头元素,用e返回其值,并返回OK