二叉树的层次遍历源程序

#include

#include

#define TRUE 1

#define FALSE 0

#define MAX_QUEUE_SIZE 100

//注:需要定义ElementType类型,如果是二叉树,

// 则应定义为指向二叉树中结点的指针类型

//格式如:

// typedef Tree ElementType;

// 队列存储结构采用循环队列 struct QueueRecord;

typedef struct QueueRecord *Queue;

int IsEmpty(Queue Q);

int IsFull(Queue Q);

Queue CreateQueue(int MaxElements);

void DisposeQueue(Queue Q);

void MakeEmpty(Queue Q);

int Enqueue(ElementType X, Queue Q);

ElementType Front(Queue Q);

int Dequeue(Queue Q, ElementType &X);

#define MinQueueSize ( 5 )

struct QueueRecord

{

int Capacity;

int Front;

int Rear;

ElementType *Array;

}

int IsEmpty(Queue Q)

{

return ((Q->Rear + 1)% Q->Capacity == Q->Front);

}

int IsFull(Queue Q)

{

return ((Q->Rear + 2) % Q->Capacity == Q->Front);

}

Queue CreateQueue(int MaxElements)

{

Queue Q;

if (MaxElements

return NULL;

Q = (Queue)malloc(sizeof(struct QueueRecord));

if (Q == NULL) return NULL;

Q->Array = (ElementType *)malloc( sizeof(ElementType) * MaxElements);

if (Q->Array == NULL) return NULL; Q->Capacity = MaxElements; MakeEmpty(Q);

return Q;

}

void DisposeQueue(Queue Q) {

if (Q != NULL)

{

free(Q->Array);

free(Q);

}

}

void MakeEmpty(Queue Q)

{

Q->Front = 1;

Q->Rear = 0;

}

static int Succ(int Value, Queue Q) {

if (++Value == Q->Capacity) Value = 0;

return Value;

}

int Enqueue(ElementType X, Queue Q) { if (IsFull(Q)) return FALSE;

else

{ Q->Rear = Succ(Q->Rear, Q); Q->Array[Q->Rear] = X;

}

}

ElementType Front(Queue Q) {

if (IsEmpty(Q)) return FALSE; return Q->Array[Q->Front];

}

int Dequeue(Queue Q, ElementType &X) {

if (IsEmpty(Q))

{

return FALSE;

}

else

{

X = Q->Array[Q->Front];

Q->Front = Succ(Q->Front, Q); } return TRUE;

}

#include

#include

#define TRUE 1

#define FALSE 0

#define MAX_QUEUE_SIZE 100

//注:需要定义ElementType类型,如果是二叉树,

// 则应定义为指向二叉树中结点的指针类型

//格式如:

// typedef Tree ElementType;

// 队列存储结构采用循环队列 struct QueueRecord;

typedef struct QueueRecord *Queue;

int IsEmpty(Queue Q);

int IsFull(Queue Q);

Queue CreateQueue(int MaxElements);

void DisposeQueue(Queue Q);

void MakeEmpty(Queue Q);

int Enqueue(ElementType X, Queue Q);

ElementType Front(Queue Q);

int Dequeue(Queue Q, ElementType &X);

#define MinQueueSize ( 5 )

struct QueueRecord

{

int Capacity;

int Front;

int Rear;

ElementType *Array;

}

int IsEmpty(Queue Q)

{

return ((Q->Rear + 1)% Q->Capacity == Q->Front);

}

int IsFull(Queue Q)

{

return ((Q->Rear + 2) % Q->Capacity == Q->Front);

}

Queue CreateQueue(int MaxElements)

{

Queue Q;

if (MaxElements

return NULL;

Q = (Queue)malloc(sizeof(struct QueueRecord));

if (Q == NULL) return NULL;

Q->Array = (ElementType *)malloc( sizeof(ElementType) * MaxElements);

if (Q->Array == NULL) return NULL; Q->Capacity = MaxElements; MakeEmpty(Q);

return Q;

}

void DisposeQueue(Queue Q) {

if (Q != NULL)

{

free(Q->Array);

free(Q);

}

}

void MakeEmpty(Queue Q)

{

Q->Front = 1;

Q->Rear = 0;

}

static int Succ(int Value, Queue Q) {

if (++Value == Q->Capacity) Value = 0;

return Value;

}

int Enqueue(ElementType X, Queue Q) { if (IsFull(Q)) return FALSE;

else

{ Q->Rear = Succ(Q->Rear, Q); Q->Array[Q->Rear] = X;

}

}

ElementType Front(Queue Q) {

if (IsEmpty(Q)) return FALSE; return Q->Array[Q->Front];

}

int Dequeue(Queue Q, ElementType &X) {

if (IsEmpty(Q))

{

return FALSE;

}

else

{

X = Q->Array[Q->Front];

Q->Front = Succ(Q->Front, Q); } return TRUE;

}


相关内容

  • 树和二叉树实验报告
  • 树 和 二 叉 树 一.实验目的 1. 掌握二叉树的结构特征,以及各种存储结构的特点及适用范围. 2. 掌握用指针类型描述.访问和处理二叉树的运算. 二.实验要求 1. 认真阅读和掌握本实验的程序. 2. 上机运行本程序. 3. 保存和打印出程序的运行结果,并结合程序进行分析. 4. 按照二叉树的操 ...

  • 二叉树遍历算法的实现
  • 二叉树遍历算法的实现 题目:编制二叉树遍历算法的实现的程序 一. 需求分析 1. 本演示程序中,二叉树的数据元素定义为非负的整型(unsigned int)数据,输入-1表示该处没有节点 2. 本演示程序输入二叉树数据均是按先序顺序依次输入 3. 演示程序以用户和计算机对话方式执行,即在计算机终端上 ...

  • 树与二叉树的转换的实现_课程设计 (2)
  • XXXXX 学院计算机与信息工程学院 课程设计报告 课程名称 课题名称树与二叉树的转换的实现_课程设计 专 业 计算机软件工程 班 级 XXXXXXXXXXXXXXX 学 号 XXXXXXX 姓 名 XXXX 联系方式 XXXXXXXXXXXX 指导教师 XXXX 20 14 年 6 月 17 日 ...

  • 二叉树遍历
  • 二叉树遍历 姓名:左伟民 学号:12714046 班级:12医药软件1班 一.选题的背景和意义? 现实世界中很多问题都可归纳称为树的模型,在树这种数据结构中,所有数据元素 之间的关系具有明显的层次特性.其中以树和二叉树最为常用,它可以很好地描述客观世界中广泛存在的具有分支关系或层次特性的对象,因此在 ...

  • 公共基础知识重点分析
  • 公共基础知识 本章导读:本章介绍了公共基础知识的相关知识.本章内容在选择题中所占比例基本是固定的.作为后面章节的学习基础,建议考生理解学习,以便更好地掌握本章的相关概念和知识点. 本章考试大纲:(1)数据结构与算法(基础,识记):(2)程序设计基础(基础,理解):(3)软件工程基础(基础,理解):( ...

  • 2015年全国数据库入门基础
  • 1. 连通图的生成树包括图中的全部n个顶点和足以使图连通的n-1条边,最小生成树是边上权值之和最小的生成树.故可按权值从大到小对边进行排序,然后从大到小将边删除.每删除一条当前权值最大的边后,就去测试图是否仍连通,若不再连通,则将该边恢复.若仍连通,继续向下删:直到剩n-1条边为止. void Sp ...

  • 数据结构与算法
  • 数据结构与算法 算法的基本特性:可行性,确定性,有穷性,拥有足够的情报. 算法是指解题方案准确而完善的描述. 算法复杂度包括时间复杂度和空间复杂度. 时间复杂度:执行算法所需要的计算机工作量. 空间复杂度:执行算法所要的内存空间. 数据结构分为逻辑结构和存储结构.常用的存储结构有顺序结构.链式存储结 ...

  • 第1章数据结构与算法笔试题考点分析
  • 1算法 考试的内容: 1.1 算法的基本概念 1.算法的概念(必记) : 是指解题方案的准确而完整的描述. 分析:要用计算机实现某一任务时,先应设计出一整套解决问题的指导方案,然后具体实现.整套的指导方案称之为算法,而具体的实现称之为程序.并且在设计指导方案时,可不用过多考虑到实现程序的具体细节(即 ...

  • 公共基础教材
  • 第一章数据结构与算法 1.1 算法 ★算法:是指解题方案的准确而完整的描述. 算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计. 算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止. ★特征包括: (1)可行性: (2)确定性, ...