MENU

数据结构实习报告提纲版

December 22, 2020 • Read: 35 • 默认分类

数据结构课程设计

用了一周的时间终于将这个课程设计写完了,下面是我写作业的详细代码并且负有详细的说明,希望对你有所帮助,再次希望你详细的阅读,因为可能会有小彩蛋。

一、报数问题

报数问题

问题描述:有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在n号小朋友的顺时针方向。
 游戏开始,从1号小朋友开始顺时针报数,接下来每个小朋友的报数是上一个小朋友报的数加1。若一个小朋友报的数为k的倍数或其末位数(即数的个位)为k,则该小朋友被淘汰出局,不再参加以后的报数。当游戏中只剩下一个小朋友时,该小朋友获胜。

例如,当n=5, k=2时:
1号小朋友报数1;
2号小朋友报数2淘汰;
3号小朋友报数3;
4号小朋友报数4淘汰;
5号小朋友报数5;
1号小朋友报数6淘汰;
3号小朋友报数7;
5号小朋友报数8淘汰;
3号小朋友获胜。
给定n和k,请问最后获胜的小朋友编号为多少?

输入格式

输入一行,包括两个整数n和k,意义如题目所述。

输出格式

输出一行,包含一个整数,表示获胜的小朋友编号。

样例输入

5 2

样例输出

3

样例输入

7 3

样例输出

4

数据规模和约定

对于所有评测用例,1 ≤ n ≤ 10001 ≤ k ≤ 9
要求:利用单向循环链表存储结构模拟此过程。

二、迷宫问题求解

任务:可以输入一个任意大小的迷宫数据,用非递归的方法求出一条走出迷宫的路径,并将路径输出;

要求:在上交资料中请写明:存储结构、基本算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;

三、哈夫曼编/译码器

任务:建立最优二叉树函数。

要求:可以建立函数输入二叉树,并输出其哈夫曼树。

在上交资料中请写明:存储结构、基本算法(可以使用程序流程图)、输入输出、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;

利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼码的编/译码系统。
{代码的博客是Gaohan}

一个完整的系统应具有以下功能:

  1. I:初始化(Initialization)。从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree中。
  2. E:编码(Encoding)。利用已建好的哈夫曼树(如不在内存,则从文件hfmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中。
  3. D:译码(Decoding)。利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中。
  4. P:印代码文件(Print)。将文件CodeFile以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码文件写入文件CodePrin中。
  5. T:印哈夫曼树(Tree printing)。将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint中。

四、拓扑排序

任务:编写函数实现图的拓扑排序。

五、散列文件的插入、删除和查找

功能要求:

  1. 初始化三列文件;
  2. 向散列文件中插入一个元素;
  3. 从散列文件中删除一个元素;
  4. 从散列文件中查找一个元素。

散列文件通常采用链接法处理冲突。

散列文件中每个节点的类型定义为:

Struct  FLNode 
{ //散列主文件中的节点类型
    ElemType  data ; //值域
    Int  next; //指向下一个节点的指针域
};