数据结构实验报告(C++) 实验4:查找与排序实验指导(含源码)

整理一下之前的作业,说不定会帮上别人
如果其中选做题没有源码或没有运行截图,那是因为作者也未完成,请见谅

一、查找与排序实验(1)——查找

题目1. 输出二叉排序树中所有的关键字值不小于key的元素值
题目2. (选做题)判断二叉排序树是否为平衡二叉树
题目3. 链地址法处理冲突的哈希表

二、查找与排序实验(2)——排序

题目1.队列元素倒置
题目2. 改进冒泡排序
题目3. 以单链表为存储结构的简单选择排序

一、查找与排序实验(1)——查找

题目1. 输出二叉排序树中所有的关键字值不小于key的元素值

实验要求:

  1. 实现一个函数模板InOrderHelp大到小输出以r为根的二叉排序树中所有的关键字值不小于key的元素值。输出时,各关键字之间隔一个空格;
  2. 利用编程模板中提供的主函数,测试算法正确性。

实现提示:

本题提供的编程模板包含bin_tree_node.h、binary_sort_tree.h、main.cpp、alg1.h共4个文件,其中bin_tree_node.h包含了二叉树结点类模板,binary_tree.h包含二叉排序树类模板类模板,main.cpp为测试所使用的主函数。算法实现代码应填写在alg1.h的InOrderHelp函数中,不可以在其它任何位置添加、删除或更改代码。

算法测试时,第一行输入二叉排序树结点个数,第二行依次输入插入二叉排序树的元素,构造出的二叉排序树t以及给定的关键字key作为参数传给alg1.h中的InOrder函数,InOrder函数调用InOrderHelp从大到小输出二叉排序树中所有的关键字值不小于key的元素值。

输入样例:

7

45 24 53 45 12 24 90

22

输出样例:

90 53 45 24

题目2. (选做题)判断二叉排序树是否为平衡二叉树

实验要求:

(1)实现一个函数模板IsBBTHelp判断以r为根的二叉排序树是否为平衡二叉树。

(2)利用编程模板中提供的主函数,测试算法正确性。

实现提示:

本题提供的编程模板包含bin_tree_node.h、binary_sort_tree.h、main.cpp、alg2.h共4个文件,其中bin_tree_node.h包含了二叉树结点类模板,binary_tree.h包含二叉排序树类模板类模板,main.cpp为测试所使用的主函数。算法实现代码应填写在alg2.h的IsBBTHelp函数中,不可以在其它任何位置添加、删除或更改代码。

算法测试时,第一行输入二叉排序树结点个数,第二行依次输入插入二叉排序树的元素,构造出的二叉排序树t作为参数传给alg2.h中的IsBBT函数,IsBBT函数调用IsBBTHelp判断二叉排序树是否为平衡二叉树。

输入样例1

7

45 24 53 45 12 24 90

输出样例1

是平衡二叉树

输入样例2

5

45 24 12 24 12

输出样例2

不是平衡二叉树

题目3. 链地址法处理冲突的哈希表

实验要求:

  1. 编程模板中给出了链地址法处理冲突的哈希表类模板MyHashTable,请补全所缺少的插入函数Insert,新结点插入在单链表尾部。
  2. 利用编程模板中提供的主函数,测试插入和删除函数的正确性。

实现提示:

本题提供的编程模板包含node.h、lk_list.h、main.cpp、alg3.h共4个文件,其中node.h包含结点类模板,lk_list.h包含了线性链表类模板,main.cpp为测试所使用的主函数。插入函数Insert实现代码应填写在alg3.h相应函数中,不可以在其它任何位置添加、删除或更改代码。

算法测试时,第一行输入元素个数和哈希表长度,第二行依次输入插入哈希表的元素,输出哈希表的遍历结果。

输入样例:

12 6

19 14 23 1 68 20 19 27 55 11 10 79

输出样例:

遍历Hash表:19 1 55 79 14 68 20 27 10 23 11

二、查找与排序实验(2)——排序

题目1. 折半插入排序

实验要求:

  1. 实现一个函数模板BInsertSort,实现折半插入排序算法。折半插入排序是指使用有序表的折半查找算法确定各元素的插入位置。
  2. 利用编程模板中提供的主函数中测试算法正确性。

实现提示:

编程模板包含main.cpp、alg4.h两个文件,其中main.cpp为测试所使用的主函数。算法实现代码应填写在alg4.h的相应函数中。在每趟排序完成后,应调用alg4.h中提供的ShowRunK函数显示该趟排序的结果。不可以在其它任何位置添加、删除或更改代码。

算法测试时,第一行输入待排序元素个数,第二行输入待排序的各个元素。调用BInsertSort输出各趟排序结果。

输入样例:

7

19 14 23 1 68 20 19

输出样例:

第 1趟排序结果:14  19  23   1  68  20  19 

第 2趟排序结果:14  19  23   1  68  20  19 

第 3趟排序结果: 1  14  19  23  68  20  19 

第 4趟排序结果: 1  14  19  23  68  20  19 

第 5趟排序结果: 1  14  19  20  23  68  19 

第 6趟排序结果: 1  14  19  19  20  23  68 

题目2. 改进冒泡排序

实验要求:

  1. 实现一个函数模板MyBubbleSort,对教材上的冒泡排序算法进行改进,当某一趟排序没有发生交换时则不用执行下一趟。
  2. 利用编程模板中提供的主函数,测试算法正确性。

实现提示:

编程模板包含main.cpp、alg5.h两个文件,其中main.cpp为测试所使用的主函数。算法实现代码应填写在alg5.h的相应函数中。在每趟排序完成后,应调用alg5.h中提供的ShowRunK函数显示该趟排序的结果。不可以在其它任何位置添加、删除或更改代码。

算法测试时,第一行输入待排序元素个数,第二行输入待排序的各个元素。调用MyBubbleSort输出各趟排序结果。

输入样例:

7

19 14 23 1 68 20 19

输出样例:

第 1趟排序结果:14  19   1  23  20  19  68 

第 2趟排序结果:14   1  19  20  19  23  68 

第 3趟排序结果: 1  14  19  19  20  23  68  

第 4趟排序结果: 1  14  19  19  20  23  68 

题目3. 以单链表为存储结构的简单选择排序

实验要求:

  1. 实现一个函数模板SelectSort,以带头结点的单链表为存储结构实现简单选择排序
  2. 利用编程模板中提供的主函数,测试算法正确性。

实现提示:

本题提供的编程模板包含node.h、lk_list.h、main.cpp、alg6.h共4个文件,其中node.h包含结点类模板,lk_list.h包含了线性链表类模板,main.cpp为测试所使用的主函数。算法实现代码应填写在alg6.h相应函数中。在每趟排序完成后,应调用alg6.h中提供的ShowRunK函数显示该趟排序的结果。不可以在其它任何位置添加、删除或更改代码。

算法测试时,第一行输入待排序元素个数,第二行输入待排序的各个元素。调用MyBubbleSort输出各趟排序结果。

输入样例:

7

19 14 23 1 68 20 19

输出样例:

第 1趟排序结果: 1 14 23 19 68 20 19

第 2趟排序结果: 1 14 23 19 68 20 19

第 3趟排序结果: 1 14 19 23 68 20 19

第 4趟排序结果: 1 14 19 19 68 20 23

第 5趟排序结果: 1 14 19 19 20 68 23

第 6趟排序结果: 1 14 19 19 20 23 68

完成后的源码下载链接:
(1条消息) 数据结构实验报告(C++)实验4:查找与排序实验指导(含源码)资源-CSDN文库

链接:https://pan.baidu.com/s/1Cbk3uKp0Iq6n5BjRTUE9RA?pwd=us2z 
提取码:us2z

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值