收藏 分销(赏)

数据结构作业解答.doc

上传人:pc****0 文档编号:7607338 上传时间:2025-01-10 格式:DOC 页数:13 大小:151KB
下载 相关 举报
数据结构作业解答.doc_第1页
第1页 / 共13页
数据结构作业解答.doc_第2页
第2页 / 共13页
数据结构作业解答.doc_第3页
第3页 / 共13页
数据结构作业解答.doc_第4页
第4页 / 共13页
数据结构作业解答.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、第一章作业一、选择题1. 算法的计算量的大小称为计算的( B )。A效率 B. 复杂性 C. 现实性 D. 难度2. 算法的时间复杂度取决于( A)A问题的规模 B. 待处理数据的初态 C. A和B3.计算机算法指的是(C),它必须具备(B) 这三个特性。(1) A计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法(2) A可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性C. 确定性、有穷性、稳定性 D. 易读性、稳定性、安全性 4一个算法应该是( B )。 A程序 B问题求解步骤的描述 C要满足五个基本特性 DA和C. 5. 下面关于算法说法错误的是( D )A算

2、法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性 D. 以上几个都是错误的6. 下面说法错误的是( C ) (1)算法原地工作的含义是指不需要任何额外的辅助空间 (2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法 (3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界 (4)同一个算法,实现语言的级别越高,执行效率就越低 A(1) B.(1),(2) C.(1),(4) D.(3)7从逻辑上可以把数据结构分为( C )两大类。A动态结构、静态结构 B顺序结构、链式结构 C线性结构、非线

3、性结构 D初等结构、构造型结构8在下面的程序段中,对x的赋值语句的频度为( D )FOR i:=1 TO n DO FOR j:=1 TO n DO x:=x+1;A O(2n) BO(n) CO(n2) DO(log2n) 9程序段 FOR i:=n-1 DOWNTO 1 DO FOR j:=1 TO i DO IF AjAj+1 THEN Aj与Aj+1对换;其中 n为正整数,则最后一行的语句频度在最坏情况下是(D )A. O(n) B. O(nlogn) C. O(n3) D. O(n2) 二、判断题1. 数据元素是数据的最小单位。( ) 2. 记录是数据处理的最小单位。 ( ) 3.

4、数据的逻辑结构是指数据的各数据项之间的逻辑关系;( )4算法的优劣与算法描述语言无关,但与所用计算机有关。( )5健壮的算法不会因非法的输入数据而出现莫名其妙的状态。( )6算法可以用不同的语言描述,如果用C 语言或PASCAL语言等高级语言来描述,则算法实际上就是程序了。( ) 7程序一定是算法。( ) 8数据的物理结构是指数据在计算机内的实际存储形式。( )9. 数据结构的抽象操作的定义与具体实现有关。( ) 10. 在顺序存储结构中,有时也存储数据结构中元素之间的关系。( )11. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。( )三、用C语言程序完成三元组的初始化、取i号位

5、上的值及修改i号位上的值。#include#include#define ok 1#define error -1typedef int *triplet;typedef int status;status init(triplet *t,int v1,int v2,int v3)*t=(int *)malloc(3*sizeof(int); if (!(*t) return error;(*t)0=v1; (*t)1=v2; (*t)2=v3; return ok; status get(triplet t,int i,int *e) if(i3) return error; *e=ti-1

6、 ; return ok; void main() triplet a; int i,e,e1,e2,e3;int b; printf(输入三元组的三个值:); scanf(%d%d%d,&e1,&e2,&e3); b=init(&a,e1,e2,e3); if(b=1) printf(%5d,%5d,%5dn,a0,a1,a2); else printf(创建三元组失败n); printf(输入取得三元组元素的位置:); scanf(%d,&i); b=get(a,i,&e); if(b=1) printf(%5dn ,e); else printf(位置错误n); 第二章作业一 选择题1下

7、述哪一条是顺序存储结构的优点?( A )A存储密度大 B插入运算方便 C删除运算方便 D可方便地用于各种逻辑结构的存储表示2下面关于线性表的叙述中,错误的是哪一个?( B )A线性表采用顺序存储,必须占用一片连续的存储单元。B线性表采用顺序存储,便于进行插入和删除操作。C线性表采用链接存储,不必占用一片连续的存储单元。D线性表采用链接存储,便于插入和删除操作。3线性表是具有n个( C )的有限序列(n0)。 A表元素 B字符 C数据元素 D数据项 E信息项4若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( A )存储方式最节省时间。A顺序表 B双链表 C带头结

8、点的双循环链表 D单循环链表5某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D )存储方式最节省运算时间。A单链表 B仅有头指针的单循环链表 C双链表 D仅有尾指针的单循环链表6设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( D )最节省时间。A. 单链表 B.单循环链表 C. 带尾指针的单循环链表 D.带头结点的双循环链表7若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。则采用( D )存储方式最节省运算时间。A单链表 B双链表 C单循环链表 D带头结点的双循环链表8. 静态链表中指针表示的是( C ). A 内存地址

9、B数组下标 C下一元素地址 D左、右孩子地址9. 链表不具有的特点是( B ) A插入、删除不需要移动元素 B可随机访问任一元素 C不必事先估计存储空间 D所需空间与线性长度成正比10. 下面的叙述不正确的是( B,C )A线性表在链式存储时,查找第i个元素的时间同i的值成正比 B. 线性表在链式存储时,查找第i个元素的时间同i的值无关C. 线性表在顺序存储时,查找第i个元素的时间同i 的值成正比D. 线性表在顺序存储时,查找第i个元素的时间同i的值无关12.(1) 静态链表既有顺序存储的优点,又有动态链表的优点。所以,它存取表中第i个元素的时间与i无关。 (2) 静态链表中能容纳的元素个数的

10、最大数在表定义时就确定了,以后不能增加。 (3) 静态链表与动态链表在元素的插入、删除上类似,不需做元素的移动。以上错误的是( B ) A(1),(2) B(1) C(1),(2),(3) D.(2)13. 若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为( C )(1=ilink=head Bp-link=NILL Cp=NILL Dp= head17循环链表H的尾结点P的特点是(A )。 AP.NEXT:=H BP.NEXT:= H.NEXT CP:=H DP:=H.NEXT18在一个以 h 为头的单循环链中,p 指针指向链尾的条件是(A) A. p-n

11、ext=h B. p-next=NULLL C. p-next-next=h D. p-data=-119完成在双循环链表结点p之后插入s的操作是( D ); A p-next:=s ; s-priou:=p; p-next-priou:=s ; s-next:=p-next;B p -next -priou:=s; p -next:=s; s -priou:=p; s -next:= p-next;C s -priou:=p; s -next:=p-next; p-next:=s; p-next-priou:=s ;D s-priou:=p; s-next:=p-next; p-next-p

12、riou:=s ; p-next:=s;二、判断1. 链表中的头结点仅起到标识的作用。( )2. 顺序存储结构的主要缺点是不利于插入或删除操作。( ) 3线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。( )4顺序存储方式插入和删除时效率太低,因此它不如链式存储方式好。( )5. 对任何数据结构链式存储结构一定优于顺序存储结构。( ) 6顺序存储方式只能用于存储线性结构。( )7集合与线性表的区别在于是否按关键字排序。( ) 8. 所谓静态链表就是一直不发生变化的链表。( ) 9. 线性表的特点是每个元素都有一个前驱和一个后继。( )10. 取线性表的第i个元素的时间同i的大小有

13、关. ( ) 11. 循环链表不是线性表. ( ) 12. 线性表只能用顺序存储结构实现。( ) 13. 线性表就是顺序存储的表。( ) 14为了很方便的插入和删除数据,可以使用双向链表存放数据。( )15. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。( ) 16. 链表是采用链式存储结构的线性表,进行插入、删除操作时,在链表中比在顺序存储结构中效率高。 ( ) 三、编写下列算法:1、 将两个单链表合并成一个单链表。 void merge(ListLink &La,ListLink &Lb)p=La-next; while(p-next) p=p-next; p-next=Lb-

14、next; free(Lb);2、 有一个有序单链表(从小到大),表头指针为head,编写一个算法向该单链表中插入一个元素值为x的结点,使插入后该链表依然有序。void insert(LinkList &head, ElemType x) p=head; while(p-next &p-nextnext; s= ( LinkList ) malloc( sizeof ( LNode ) ; s-data=x; s-next= p-next ; p-next =s ;3、 用算法是实现带头结点的单链表数据结点逆置。(原链表为a1,a2,an)(逆置后为:an,an-1,a2,a1) void s

15、erver(LinkList &L) p=L-next; L-next=NULL;while(p) r=p-next;/将p的后继结点的地址保存在r中 p-next=L-next;/将p卸下来,每次插在L之和,第一个结点之前 L-next=p; p=r;/还原p第三章作业1、 设队列中有A、B、C、D、E这五个元素,其中队首元素为A。如果对这个队列重复执行下列4步操作:(1) 输出队首元素;(2) 把队首元素值插入到队尾;(3) 删除队首元素;(4) 再次删除队首元素。直到队列为空为止,求得到的输出序列。ACECC(1)输出A,(2)队列为ABCDEA(3)队列为BCDEA (4)队列为CDE

16、A重复:(1)输出C,(2)队列为CDEAC(3)队列为DEAC(4)队列为EAC重复:(1)输出E,(2)队列为EACE(3)队列为ACE(4)队列为CE重复:(1)输出C,(2)队列为CC(3)队列为C(4)队列为空得到的输出序列:ACECC2、 假设以带头结点的循环链表表示队列,并且只设一个尾指针rear指向队尾元素结点(注意不设头指针),试编写相应的队列初始化、入队列和出队列的算法。void initqueue(LinkList &rear)/初始化队列为空队列rear= ( LinkList ) malloc( sizeof ( LNode ) ;rear-next=rear;voi

17、d inqueue(LinkList &rear ,ElemType e)/入队列 s= ( LinkList ) malloc( sizeof ( LNode ) ; s-data=e; p-next=rear-next; rear-next=p; rear=p;void Delqueue(LinkList &rear ,ElemType &e)/出队列 if(rear-next=rear) printf(“队列为空”); else p=rear-next-next; rearr-next-next=p-next; free(p);第六章作业1、已知二叉树的前序序列为ABDGHCEFI和中序

18、序列GDHBAECIF,求后序序列。2、对二叉树中的结点进行按层次顺序(每一层自左至右)的访问操作称为二叉树的层次遍历,遍历所得到的结点序列称为二叉树层次序列。现已知一棵二叉树的层次序列为ABCDEFGHIJ,中序序列为DBGEHJACIF,请画出此二叉树。3、对下图所示的森林: (1)求森林的前序序列和后序序列;(2)将此森林转换为相应的二叉树; (1)此森林的前序序列: ABCDEFGHIJKLMPQRNO此森林的后序序列: BDEFCAIJKHGQRPMNOL4、假设用于通信的电文由字符集a,b,c,d,e,f,g,h中的字母构成,这8个字母在电文中出现的概率分别为0.07,0.19,0

19、.02,0.06,0.32,0.03,0.21,0.10(1)试构造哈夫曼树。(2)写出这8个字母的哈夫曼编码。哈夫曼编码图见题图根据上图可得编码表:根据上图可得编码表: a:0010b:10c:00000d:0001 e:01f:00001g:11h:00115、算法设计: 用先序遍历和中根序遍历的思想统计叶子结点的个数。解法一:先序遍历int Leaf(Bitree t)int static n=0; if(t) if(t-lchild=NULL&t-rchild=NULL) n+; Leaf(t-lchild); Leaf(t-lchild); return n;解法一:中序遍历int

20、n=0;void Leaf(Bitree t) if(t) Leaf(t-lchild);if(t-lchild=NULL&t-rchild=NULL) n+; Leaf(t-lchild); /还可以用非递归的思想实现6、算法设计: 已知二叉树采用二叉链表存放,要求返回二叉树的后序遍历的第一个结点的指针,不用栈不用递归实现。Bitree orderfirst(Bitree t) p=t; while(p) while(p-lchild) p=p-lchild;if(p-rchild=NULL) return p;elsep= p-rchild;第七章作业1. 对图7.26所示的连通图,请分别

21、用Prim算法构造其最小生成树。2 对图7.27所示的有向图,试利用Dijkstra算法求出从源点1到其它各顶点的最短路径,并写出执行算法过程.答:从源点1到各点的路径如下所示:1到2:1321到3:131到4:13641到5:13251到6:136整个执行算法过程中的扩充顶点集的每次循环状态见题目后的表。(用文本格式不方便表示)循环状态表如下:D表示路径长度 p表示路径的前驱顶点循环顶点集KD1D2D3D4D5D6P1P2P3P4P5P6初始化1-020151111,33019152531321,3,22019152925312331,3,2,66019152929253162341,3,2,6,44019152929253162351,3,2,6,4,5501915292925316236同上-同上同上3 试写出下图所示有向图的所有拓扑序列。 1,5,4,3,2,6 1,5,3,4,2,6 1,5,3,2,4,6 3,1,5,4,2,6 3,1,2,5,4,6等4.求每个事件的最早发生时间和最晚发生时间。20154301020101510123546123456最早发生时间02015605075最晚发生时间02016605075

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服