数据结构最后的作业 参考.docx
- 文档编号:3618955
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:16
- 大小:171.14KB
数据结构最后的作业 参考.docx
《数据结构最后的作业 参考.docx》由会员分享,可在线阅读,更多相关《数据结构最后的作业 参考.docx(16页珍藏版)》请在冰豆网上搜索。
数据结构最后的作业参考
数据结构作业
{提示:
这个版本仅供参考,可能有些不正确的细节。
}
一,已知有4个元素为:
12,33,40,51。
用单链表(约定头指针为head,新结点指针为new,搜索指针为p)从左到右依次存储。
分别画出
(1)进栈39
(2)进队39(3)有序表插入39等三种情况的工作示意图。
并标注上改链的次序和主要的工作语句。
答:
(1)进栈:
head
(2)
(1)
new
改链次序:
new->next=head->next;
Top->next=new;
(2)进队:
head->
rear
(2)
改链次序:
rear->next=new;
rear=new;
(3)有序表的插入:
head->
p
(2)
(1)
new->
改链次序:
new->next=p->next;
p->next=new;
二,自己画一个6*7的稀疏矩阵(比如:
非0元只有4个)。
画出三元组表示法。
并画出对应的转置矩阵的三元组。
答:
6
7
4
0
3
1
1
0
2
3
2
3
5
4
9
7
6
4
0
1
2
2
3
3
3
0
1
4
5
9
0001000
2000000
0000000
0030000
0000000
0000900
三元组转置三元组
三,画出表达式8-6*3/(2-1)的二叉树表示。
写出四种遍历的结果。
画出利用栈进行计算的完整过程。
答:
表达式的二叉树表示法如下:
先跟遍历:
-8/*63–21;
中跟遍历:
8–6*3/2–1;
后跟遍历:
863*21-/-;
层次遍历:
-8/*-6321;
利用栈计算得过程:
3
6
8
(1),遇到操作数进栈:
4
3
top->2
1
0
(2)遇到操作符出栈两次:
计算结果进栈
18
8
4
3
2
top->1
0
其中:
6*3=18;
(3)重复以上过程:
1
2
18
8
4
top->3
2
1
0
1
18
8
4
3
top->2
1
0
18
8
2-1=1;
4
3
2
top->1
0
-10
8-18=-10;
4
3
2
1
top->0
结束
四,图的存储结构。
自己画一个图,至少五个结点,多条边。
画出邻接矩阵和邻接表示意图。
答:
图如下:
其邻接矩阵:
B=
010100
101010
010001
100010
010101
001010
邻接表:
0
1
2
3
4
5
五,树,二叉树,森林的互助转换。
自己画一个有三层深度,树的度为3的一颗树,改划成二叉树。
答:
三层深度的树:
改链:
拉直:
旋转45度:
六,最优二叉树的建立。
权值序列:
25,12,27,6,15
答:
排序:
612152527
建立二叉树:
(1)->
(2)->
(3)->
七,二分查找法的示意图。
自己产生十个数据。
画出其中一个元素查找成功的过程。
答:
给出得十个数据如下(假设查找数据63)
32414451535760636489
分别标上下标:
12345678910
32414451(535760636489)
32414451(535760)636489
324144515357(60636489)
32414451535760(63)6489
八,哈希查找法。
对于数据序列39,24,15,7,16,10.哈希函数为hash(x)=xmod9。
假如冲突采用挂链法。
画出完整的示意图。
答:
012345678
其中采用队列来解决冲突问题
九,快速排序法。
对于数据序列45,12,78,35,49,87,26,95。
画出第一轮排序的过程。
叙述主要的算法思路。
答:
第一轮的基数是第一个数据45:
[4512783549872695]
[2612783549874595]
[2612453549877895]
[2612354549877895]
………
算法思路:
以第一个数据为基准数据,从后往前扫描并比较,当扫描到比基准数据小的时候立即和基准数据交换位置,然后从基准数据的下一个数据开始从前往后扫描,重复以上过程,直到所有数据都于基准数据比较完,第一轮排序结束.然后依次类推.直到所有数据都按顺序排序结束.
一十,堆排序。
对于数据序列15,24,72,35,49,25,64。
画出对应的顺序存储示意图。
画出对应的完全二叉树。
画出初始大跟堆。
画出初始大跟堆对应的存储结构。
画出产生已排序空间一个数据的逻辑结构示意图。
答:
[15247235492564]待排数据为线型表.
其顺序存储的示意图如下:
01234567
对应的完全二叉树:
初始大根堆:
初始堆对应的存储结构:
01234567
已排空间第一个数据的逻辑示意图:
[496435242515](72)
十一,讨论题:
顺序存储和链表存储的优点对比分析。
答:
顺序存储结构——按逻辑次序把线性表的结点依次存放在一组地址连续的存储单元中。
用顺序存储的优点是:
可以随机访问数据,存储空间的利用率高,存取速度快。
链表存储――用链接存储方式存储,链表中的结点用存储单元(就是若干个连续字节)来存放,一个结点对应一个存储单元,存储单元之间既可以是(空间上)连续的,也可以是不连续的,甚至可以零散分布在存储空间中的任何位置。
用链表存储的优点是:
可以做到高效的动态操作,插入,删除等操作都不会引起数据的移动。
十二,讨论题:
循环队列解决了什么问题?
优点是什么?
如何巧妙的实现环状?
答:
循环队列解决了空间利用率的问题,防止了数据的“假溢出”。
优点是:
充分利用可用空间,提高了数据的访问时间。
实现环状方法如下:
约定初始状态为front==rear==0,每次入队把数据存入当前rear的位置上,之后用rear=rear+1向前移动尾指针。
出队时用front=front+1前移。
使用求模函数实现环状,不论什么整数address,进行addressmod10时,结果永远在0~9之间。
入队地址改为:
rear=(rear+1)%MaxSize,出队时地址计算为:
front=(front+1)%MaxSize。
区分队满和队空时使用一个记数器,放在0下标位置上,当rear+1==front时,认为队满。
十三,讨论题:
一般而言,如何比较递归和非递归算法的优缺点?
答:
递归优点是可以简洁的模拟现实生活中的一些复杂关系,所以可提供一个很好的解决问题的角度,但是它的时间效率相对较低。
并且要考虑函数调用的开销,其阅读性不高。
相对来说非递归算法时间效率较高,不考虑函数调用开销,阅读性也好,但很难间接模拟较复杂的问题。
十四,讨论题:
常规的排序算法的共同点是什么?
答:
常规的排序算法的共同点是:
都得通过一下三种操作,即:
比较,交换,移动。
并且它们得算法时间复杂度均为:
O(n2)。
十五,讨论题:
字符串和线性表的关系是什么?
字符串的操作主要体现在什么方面?
答:
字符串也是一种特殊的线型表,其操作的基本单位是“字符串”,很多时候是一次性处理“大量字符”。
而线性表则是以“单个元素”作为操作对象。
十六,讨论题:
栈和队列的工作原理以及各自的应用范例?
答:
栈的工作原理是:
先进后出,即LASTINFIRSTOUT
其应用范例是:
数值转换问题,函数调用机制的实现问题,括号匹配问题,表达式求值处理问题等
队列工作原理是:
先进先出,即FIRSTINFIRSTOUT
其应用范例是:
打印机共享问题,多用户共享CPU资源问题,飞机场跑道管理模拟系统等。
十七,讨论题:
索引存储的特点和优点?
答:
索引存储的特点和优点是:
1,无数据的移动(动态操作);
2,并非顺序存储;
3,存储空间无链表,读取操作可随即访问,并且速度快;
4,加快了检索的速度,但是减慢了插入和删除的速度。
十八,讨论题:
诸如迷宫,八皇后,棋盘等课题使用什么数据结构比较好的选择?
为什么?
答:
应使用栈的数据结构比较好,因为在迷宫中要考虑那些路已经走了,那些路可以走,那些路是死路,在八皇后中的函数递归调用机制,棋盘的悔棋机制都需要栈的思想来解决。
因此因该用栈的数据结构。
十九,讨论题:
图的邻接表中,挂链的结点中为什么不能存放实际要处理的数据?
答:
因为挂链的结点中存放的是地址,也就是说是关系,如果存放数据,则当改动数据时数据的关系会丢失.应此结点中不能存放处理的数据.
二十,讨论题:
哈希存储法真的能做到O
(1)级的查找算法吗?
为什么?
你如何评价这个的思路?
答:
如果满足以下两个条件:
(1),构造好的哈希函数;
(2)制定解决冲突的方案;
那么哈希存储法90%-95%能做到O
(1)级的查找算法.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构最后的作业 参考 数据结构 最后 作业
![提示](https://static.bdocx.com/images/bang_tan.gif)