- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程设计1
一元稀疏多项式计算器(不选)
[问题描述]
设计一个一元稀疏多项式简单计算器。
[基本要求]
输入并建立多项式;
输出多项式,输出形式为整数序列:n, c1, e1, c2, e2,……, cn, en ,其中n是多项式的项数,ci, ei分别是第i项的系数和指数,序列按指数降序排序;
多项式a和b相加,建立多项式a+b;
多项式a和b相减,建立多项式a-b;
[测试数据]
(2x+5x8-3.1x11)+(7-5x8+11x9)=(-3.1x11+11x9+2x+7)
(6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2-x2+7.8x15)=(-7.8x15-1.2x9-x+12x-3)
(1+x+x2+x3+x4+x5)+(-x3-x4)=(x5+x2+x+1)
(x+x3)+(-x-x3)=0
(x+x2+x3)+0=(x3+x2+x)
[实现提示]
用带头结点的单链表存储多项式,多项式的项数存放在头结点中。
背包问题的求解(一人)
[问题描述]
假设有一个能装入总体积为T的背包和n件体积分别为w1, w2, …,wn的物品,能否从n件物品中挑选若干件恰好装满背包,即使w1+w2+…+wn=T,要求找出所有满足上述条件的解。例如:当T=10,各件物品的体积为{1,8,4,3,5,2}时,可找到下列4组解:
(1,4,3,2)、 (1,4,5)、 (8,2)、 (3,5,2)
[实现提示]
可利用回溯法的设计思想来解决背包问题。首先,将物品排成一列,然后顺序选取物品转入背包,假设已选取了前i件物品之后背包还没有装满,则继续选取第i+1件物品,若该件物品“太大”不能装入,则弃之而继续选取下一件,直至背包装满为止。但如果在剩余的物品中找不到合适的物品以填满背包,则说明“刚刚”装入背包的那件物品“不合适”,应将它取出“弃之一边”,继续再从“它之后”的物品中选取,如此重复,直至求得满足条件的解,或者无解。
由于回溯求解的规则是“后进先出”因此自然要用到栈。
完全二叉树判断(一人)
用一个二叉链表存储的二叉树,判断其是否是完全二叉树。
最小生成树求解(一人)
任意创建一个图,利用克鲁斯卡尔算法,求出该图的最小生成树。
最小生成树求解(一人)
任意创建一个图,利用普里姆算法,求出该图的最小生成树。
树状显示二叉树(一人)
编写函数displaytree(二叉树的根指针,数据值宽度,屏幕的宽度)输出树的直观示意图。输出的二叉树是垂直打印的,同层的节点在同一行上。
[问题描述]
假设数据宽度datawidth=2,而屏幕宽度screenwidth为64=26,假设节点的输出位置用
(层号,须打印的空格数)来界定。
第0层:根在(0,32)处输出;
第1层:因为根节点缩进了32个空格,所以下一层的偏移量(offset)为32/2=16=screenwidth/22。即第一层的两个节点的位置为(1,32-offset),(1,32+offset)即(1,16),(1,48)。
第二层:第二层的偏移量offset为screenwidth/23。第二层的四个节点的位置分别是(2,16-offset),(2,16+offset),(2,48-offset),(2,48+offset)即(2,8),(2,24),(2,40),(2,56)。
……
第i层:第i层的偏移量offset为screenwidth/2i+1。第i层的每个节点的位置是访问第i-1层其双亲节点时确定的。假设其双亲的位置为(i-1,parentpos)。若其第i层的节点是其左孩子,那末左孩子的位置是(i,parentpos-offset),右孩子的位置是(i,parentpos+offset)。
[实现提示]
利用二叉树的层次遍历算法实现。利用两个队列Q,QI。队列Q中存放节点信息,队列QI中存相应于队列Q中的节点的位置信息,包括层号和需要打印节点值时需要打印的空格数。当节点被加入到Q时,相应的打印信息被存到QI中。二叉树本身采用二叉链表存储。
综合排序(一人)
[问题描述]
利用随机函数产生N个随机整数(20000以上),对这些数进行多种方法进行排序。
[基本要求]
①分别采用插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序以及归并排序。
②统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。
哈夫曼编码/译码器(一人)
[问题描述]
要传输一些数据(比如英文单词),设计一个利用哈夫曼算法的编码系统,为这些单词编码。并在接收端进行译码。
[基本要求]
① 将需要传输的数据存放在数据文件data.txt 中。
② 读入数据文件并为其编码,将编码后的内容存入文件code.txt中。
③ 读入code.txt,译码。并将
文档评论(0)