数据结构实验五查找算法应用

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

数据结构实验五查找算法应用

天津理工大学实验报告学院(系)名称: 计算机与通信工程学院

姓名学号专业计算机科学与技术班级2009 级 1 班实验项目实验五查找算法应用

课程名称数据结构与算法课程代码

实验时间2011年6月9日第5-8节实验地点7 号楼215 批改意见成绩教师签字:

实验五查找算法应用

实验时间:2011 年6月9日12:50 -15:50(地点:7-215)

实验目的:理解二叉排序树、AVL树的查找、插入、删除、建立算法的思想及程序实现; 掌握散列存储结构的思想,能选择合适散列函数,实现不同冲突处理方法的散列表的查找、建立。散列表等查找算法解决实际问题。

具体实验题目:(任课教师根据实验大纲自己指定)每位同学可从下面题目中选择1-2 题实现: 1(哈希表查找

1)问题描述:针对某个集体的“人名”构造哈希表,解决按“人名”进行查找的索引结构。

2)实验要求:要求表的平均查找长度不超过R,完成相应的建表和查表程序。

2(构造二叉排序树,并进行中序遍历

1)问题描述:从键盘读入一串整数构造一棵二叉排序树,并对得到的二叉排序述进行中序遍历,得到有序序列。

2)实验要求: 该二叉排序树以二叉链表存储

实验报告格式及要求: 按学校印刷的实验报告模版书写。(具体要求见四)第1页共3页

实验思路: 首先定义二叉链表的存储结构,定义左右孩子,用递归算法定义插入二叉排序树,按照左小于中小于右,即程序中的insert() 函数。然后是生成二叉树的

算法,即CreateTree() 函数,最后是中序遍历的递归算法的算法,即

InOrder() 函数。

下面是主函数main() 函数。程序结果如图所示。

实验代码如下:

#include

#include

typedef int ElemType;// 每个元素的数据类型为Elemtype ,假设为int typedef int KeyType;

typedef struct BiTNode{// 定义二叉链表结构

ElemType data;

struct BiTNode * lchild,* rchild;// 左右孩子指针

}BiTNode;

typedef BiTNode *BiTree;// 将BiTree 定义为指向二叉链表节点结构的指针类型BiTree insert(BiTree T,KeyType k){// 二叉排序树的插入,递归算法

if(T==NULL){

T=(BiTree)malloc(sizeof(BiTNode));

T->data=k;

T->lchild=T->rchild=NULL;

else if(kdata) T->lchild = insert(T->lchild,k); else if(k>T->data)

T->rchild = insert(T->rchild,k); return T;

}

BiTree CreateTree(int n)

{// 生成二叉树的递归算法

int i ;

BiTree T;

T=(BiTree)malloc(sizeof(BiTNode));

T= NULL;

for( i=0; i

{

int k;

scanf("%d",&k);

T=insert(T,k);

}

return T;

}

void InOrder(BiTree root){// 中序遍历第2页共3页if(root==NULL) return; InOrder(root->lchild);

printf("% d",root->data);

InO rder(root->rchild); }

void mai n()

{

BiTree p;

int n;

printf(”请输入关键字个数n:\n"); sca nf("%d",&n);

printf(" 请输入节点值创建二叉排序数:\n"); p=CreateTree( n);

printf(" 递归中序遍历为:\n");

In Order(p);

prin tf("\n");

printf(" 以上为遍历的结果〜\n");

实验结果如图所示

第3页共3页

相关文档
最新文档