算法于数据结构 河海大学文天学院

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《算法与数据结构》

课程设计报告

学号

姓名

班级计算机

指导教师

河海大学文天学院

2014年6 月

课题一:二叉树的各种算法

一、目的

1、掌握二叉树的所有算法

2、熟悉计算机英语和术语

3、会写课本上已有的算法之后,可以借其思想进行扩展,逐步提高编程能力。巩固和加深对线性表、栈、队列、字符串、树、图、查找、排序等理论知识的理解。

二、实习环境

个人计算机,Windows操作系统,Turbo C 2.0或 WinTC或Visual C++等编译开发环境三、实习内容与步骤

内容

1、创建二叉树

2、用递归方法实现二叉树的各种遍历

步骤

开始——>用前序输入法构造一颗二叉树——>用中序输入法构造一颗二叉树——>用后序输入法构造一颗二叉树——>用非递归前序输入法构造一颗二叉树——>用非递归中序输入法构造一颗二叉树——>用非递归后序输入法构造一颗二叉树——>释放二叉树——>结束

四、程序代码:

#include "stdio.h"

#include "stdlib.h"

#define MAXSIZE 100

typedef char DataType;

typedef struct bnode {

DataType data;

struct bnode *lchild, *rchild;

} Bnode, *BTree;

typedef struct {

BTree data[MAXSIZE];

int top;

}SeqStack, *PSeqStack;

PSeqStack Init_SeqStack()

{

PSeqStack S;

S=(PSeqStack)malloc(sizeof(SeqStack));

if (S)

S->top=-1;

return S;

}

int Empty_SeqStack(PSeqStack S)

{

if (S->top==-1)

return 1;

else

return 0;

}

int Push_SeqStack (PSeqStack S,BTree x)

{

if (S->top==MAXSIZE-1) return 0;

else {

S->top++; S->data[S->top]=x;

return 1;

}

}

int Pop_SeqStack(PSeqStack S , BTree *x)

{

if (Empty_SeqStack ( S ) )

return 0;

else {

*x=S->data[S->top]; S->top--;

return 1;

}

}

int GetTop_SeqStack(PSeqStack S, BTree *x)

{

if ( Empty_SeqStack ( S ) ) return 0;

else {

*x= S->data[S->top];

return (1);

}

}

BTree CreateBinTree()

{

char ch; BTree t;

ch=getchar();

if (ch=='#') t=NULL;

else

{

t=(BTree)malloc(sizeof(Bnode));

t->data=ch;

t->lchild=CreateBinTree();

t->rchild=CreateBinTree();

}

return t;

}

#define MAXSIZE 100

typedef struct {

BTree data[MAXSIZE];

int front, rear;

}SeqQueue,*PSeqQueue;

PSeqQueue Init_SeqQueue( )

{

PSeqQueue Q;

Q=( PSeqQueue )malloc(sizeof(SeqQueue));

if (Q) {

Q->front=0;

Q->rear=0;

}

return Q;

}

int Empty_SeqQueue(PSeqQueue Q)

{ if (Q && Q->front==Q->rear)

return (1);

else

return (0);

}

int In_SeqQueue ( PSeqQueue Q , BTree x)

{

if ((Q->rear+1)%MAXSIZE==Q->front)

{ printf("对满");

return -1;

}

else

{ Q->rear=(Q->rear+1) % MAXSIZE;

Q->data[Q->rear]=x;

return 1;

}

}

int Out_SeqQueue (PSeqQueue Q,BTree *x)

{

if (Empty_SeqQueue(Q)) {

printf("对空");

return -1;

}

else

{ Q->front=(Q->front+1) % MAXSIZE;

相关文档
最新文档