ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:137.52KB ,
资源ID:11324185      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11324185.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(期末数据结构复习习题含答桉.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

期末数据结构复习习题含答桉.docx

1、期末数据结构复习习题含答桉 数据结构练习题一、选择题1、从逻辑上可以把数据结构分为( C )两大类。A动态结构、静态结构 B顺序结构、链式结构 C线性结构、非线性结构 D初等结构、构造型结构2、以下数据结构中,哪一个是线性结构( D )? A广义表 B. 二叉树 C. 稀疏矩阵 D. 串3、在下面的程序段中,对x的赋值语句的频度为( C )for (i=1;i=n;i+)for (j=1;j=n;i+) x=x+1;A O(2n) BO(n) CO(n2) DO(log2n) 4、下面关于线性表的叙述中,错误的是哪一个?( B )A线性表采用顺序存储,必须占用一片连续的存储单元。B线性表采用顺

2、序存储,便于进行插入和删除操作。C线性表采用链接存储,不必占用一片连续的存储单元。D线性表采用链接存储,便于插入和删除操作。5、某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D )存储方式最节省运算时间。A单链表 B仅有头指针的单循环链表 C双链表 D仅有尾指针的单循环链表6、 静态链表中指针表示的是( B ). A 内存地址 B数组下标 C下一元素地址 D左、右孩子地址7、下面的叙述不正确的是( BC )A线性表在链式存储时,查找第i个元素的时间同i的值成正比 B. 线性表在链式存储时,查找第i个元素的时间同i的值无关C. 线性表在顺序存储时,查找第i个元

3、素的时间同i 的值成正比D. 线性表在顺序存储时,查找第i个元素的时间同i的值无关8、 若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为( C )(1=inext=s;s-next=p-next; B s-next=p-next;p-next=s;Cp-next=s;p-next=s-next; D p-next=s-next;p-next=s;10、对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是( B )Ahead=NULL Bheadnext=NULL Cheadnext=head Dhead!=NULL11、 一个栈的输入序列为12

4、3n,若输出序列的第一个元素是n,输出第i(1=i(空格串是由空格组成的)C模式匹配是串的一种重要运算 D串既可以采用顺序存储,也可以采用链式存储17、设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为( C )A求子串 B联接 C匹配 D求串长18、 设有数组Ai,j,数组的每个元素长度为3字节,i的值为1 到8 ,j的值为1 到10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A5,8的存储首地址为( B )。30*6180A. BA+141 B. BA+180 C. BA+222 D. BA+22519、已知广义表L=(x,y,z),a,(u,t,w),

5、从L表中取出原子项t的运算是( D )。A. head(tail(tail(L) B. tail(head(head(tail(L) C. head(tail(head(tail(L) D. head(tail(head(tail(tail(L)))20、广义表A=(a,b,(c,d),(e,(f,g),则下面式子的值为( D )。Head(Tail(Head(Tail(Tail(A)A. (g) B. (d) C. c D. d二、判断题1、 数据元素是数据的最小单位。( )2、算法可以用不同的语言描述,如果用C 语言或PASCAL语言等高级语言来描述,则算法实际上就是程序了。( Y ) 3

6、、 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。( )4、线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。( )5、线性表的特点是每个元素都有一个前驱和一个后继。( )6、一个稀疏矩阵Am*n采用三元组形式表示, 若把三元组中有关行下标与列下标的值互换,并把m和n的值互换,则就完成了Am*n的转置运算。( ) 7、所谓取广义表的表尾就是返回广义表中最后一个元素。( )三、填空题1、数据的物理结构包括 数据元素 的表示和 关系 的表示。2、当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用_顺序_存储结构。3、线性表L=

7、(a1,a2,an)用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要移动元素的个数是_(n-1)/2_。4、对于一个具有n个结点的单链表,在已知的结点*p后插入一个新结点的时间复杂度为_O(1)_,在给定值为x的结点后插入一个新结点的时间复杂度为_ O(n)_。5、带头结点的双循环链表L中只有一个元素结点的条件是:_L-next-next=L _6、一个栈的输入序列是:1,2,3则不可能的栈输出序列是_3 1 2_。7、用S表示入栈操作,X表示出栈操作,若元素入栈的顺序为1234,为了得到1342出栈顺序,相应的S和X的操作串为_ SXSSXSXX_。8、_队列_又称作先进先

8、出表。9、组成串的数据元素只能是_字符_。 10、设有C语言描述的二维数组A1020,其每个元素占两个字节,第一个元素的存储地址为100,若按行优先顺序存储,则元素A66存储地址为_352_。(没说明,则下标从0开始) 四、算法与应用题1. 设线性表存放在向量Aarrsize的前elenum个分量中且递增有序,试写一算法将x插入到线性表的适当位置,以保持线性表的有序性并分析其时间复杂度。#define arrsize 100bool sortinsert(Elemtype A,int elenum , Elemtype x) int i;if(elenum = = arrsize) print

9、f(“该数组向量已满”); return false;i=elenum-1;while(Aix & i=0) Ai+1=Ai; i- -;Ai+1=x;return true;/ 2.已知带头结点的动态单链表L中的结点是按整数值递增排列的,试写一算法将值x为的结点插入到表L中,使L仍然有序。/线性表的单链表存储结构 typedef struct Lnode ElemType data; struct Lnode *next; LNode , *LinkList;LinkList sortinsert(LinkList L,int x) /* 带头结点*/ LinkList p,q, s; s=

10、(LinkList)malloc(sizeof(LNode); if(!s) printf(“动态空间分配不成功”); exit(-1);s-data=x; q=L; p=L-next; while ( p!=NULL & p-data next; s-next=q-next; q-next=s ; return L; 3.在长度大于1的单循环链表L中,既无头结点也无头指针。s为指向链表中某个结点的指针,试编写算法删除结点*s的直接前趋结点。/条件是长度大于一#include using namespace std;typedef struct Lnode ElemType data; str

11、uct Lnode *next; LNode , *LinkList;bool delete_prior(LinkList s) LinkList p; LinkList q; q=s; p=s-next; while(p-next!=s) q=p; p=p-next; q-next =s; delete p;五、程序填空题1、 下面是用c语言编写的对不带头结点的单链表进行就地逆置的算法,该算法用L返回逆置后的链表的头指针,试在空缺处填入适当的语句。void reverse(linklist &L)p=null;q=L;while(q!=null) (1) L=L-next ; q-next=

12、p;p=q;(2) q=L _ ; (3) L=p; 2、对单链表中元素按插入方法排序的C语言描述算法如下,其中L为链表头结点指针。请填充算法中标出的空白处,完成其功能。(10分)typedef struct node int data; struct node *next; linknode,*link;void Insertsort(link L) link p,q,r,u; p=L-next; (1) L-next=NULL _; while(2)_ p!=NULL _) r=L; q=L-next; while(3) q!=NUll _& q-datadata) r=q; q=q-ne

13、xt; u=p-next; (4)_ p-next=q _ ; (5)_ r-next= p_; p=u; 第六章练习选择题1. 设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1 则T中的叶子数为( D )A5 B6 C7 D82. 设森林F对应的二叉树为B,它有m个结点,B的根为p,p的右子树结点个数为n,森林F中第一棵树的结点个数是( A )Am-n Bm-n-1 Cn+1 D条件不足,无法确定3若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是(B )A9 B11 C15 D不确定4具有10个叶结点的二叉树中有( B )个度为2的结点, A8

14、B9 C10 Dll5一棵完全二叉树上有1001个结点,其中叶子结点的个数是( E )A 250 B 500 C254 D505 E以上答案都不对 6. 有n个叶子的哈夫曼树的结点总数为( D )。A不确定 B2n C2n+1 D2n-17. 一棵具有 n个结点的完全二叉树的树高度(深度)是( A )Alogn+1 Blogn+1 Clogn Dlogn-18深度为h的满m叉树的第k层有( A)个结点。(1=k=1) 4度为二的树就是二叉树。5. 在中序线索二叉树中,每一非空的线索均指向其祖先结点。填空题:1如某二叉树有20个叶子结点,有30个结点仅有一个孩子,则该二叉树的总结点数为_69_。

15、2具有256个结点的完全二叉树的深度为_9_。3已知一棵度为3的树有2个度为1的结点,3个度为2的结点,4个度为3的结点,则该树有_12_个叶子结点。4在一棵二叉树中,度为零的结点的个数为N0,度为2的结点的个数为N2,则有N0 =_ N2 _+ 1_5已知二叉树有50个叶子结点,则该二叉树的总结点数至少是_99_。6一个有2001个结点的完全二叉树的高度为_11_。7设F是由T1,T2,T3三棵树组成的森林,与F对应的二叉树为B,已知T1,T2,T3的结点数分别为n1,n2和n3则二叉树B的左子树中有_n1-1_个结点,右子树中有_n2+n3_个结点。作业题1、给定一组权值2,3,5,7,1

16、1,13,17,19,23,29,31,37,41,(1)试画出用Huffman算法建造的Huffman树;(2)求平均编码长度()考虑概率解:(1)(2)(7(23)6557 4(176613)3(313741291923)/ 2382、设一棵二叉树的先序、中序遍历序列分别为先序遍历序列: A B D F C E G H 中序遍历序列: B F D A G E H C(1)画出这棵二叉树。(2)画出这棵二叉树的后序线索树。解:(1)(2)后序遍历为:F D B G H E C A3二叉树存储结构同上题,以下程序为求二叉树深度的递归算法,请填空完善之。 int depth(bitree bt)

17、 /*bt为根结点的指针*/int hl,hr; if (bt=NULL) return(1)_ 0_); hl=depth(bt-lchild); hr=depth(bt-rchild); if(2) hlhr _) (3)_ hr=hl_; return(hr+1); 4线索二叉树有数据域data,左右孩子域lchild和rchild,左右标志ltag及rtag,规定标志为1对应的孩子域是线索,0则为指向孩子的指针。规定在储存线索二叉树时,完成下面中序线索化过程。(存储线索二叉树,不增加头结点,只在原有的由tree指向的二叉树中增加线索,此处也不考虑c语言的具体语法与约定,线索化前所有的标

18、志tag都是0)。/* pre是同tree类型相同的指针,初值是null */thread_inorder (tree) if(tree!=null) thread_inorder(1) tree-lchild _); if(tree-lchild=(2)_ NULL_) tree-ltag=1; tree-lchild=pre; if(3) tree-rchild_ = null) (4) tree-rtag=1_; (5) tree-rchild=tree _;pre=p; thread-inorder(6)_ tree-rchild _); 5、已知一棵满二叉树的结点个数为20到40之间

19、的素数,此二叉树的叶子结点有多少个?(请给出具体的推理过程)解: 166、一棵共有n个结点的树,其中所有分支结点的度均为K,求该树中叶子结点的个数。7. 假设一个二叉树的两种遍历如下:前序:ABFGCHDEIJLK 中序:FGBHCDILJKEA画出这棵二叉树以及它的中序线索树;解:第七章练习选择题1设无向图的顶点个数为n,则该图最多有( B )条边。An-1 Bn(n-1)/2 C n(n+1)/2 D0 En22一个n个顶点的连通无向图,其边的个数至少为( A )。An-1 Bn Cn+1 Dnlogn;3一个有n个结点的图,最少有( B )个连通分量,最多有( D )个连通分量。A0 B

20、1 Cn-1 Dn4在一个无向图中,所有顶点的度数之和等于所有边数( B )倍,在一个有向图中,所有顶点的入度之和等于所有顶点出度之和的( C )倍。A1/2 B2 C1 D45下列哪一种图的邻接矩阵是对称矩阵?( B )A有向图 B无向图 CAOV网 DAOE网6当一个有N个顶点的图用邻接矩阵A表示时,顶点Vi的度是(B )。A B C D+ 7无向图G=(V,E),其中:V=a,b,c,d,e,f, E=(a,b),(a,e), (a,c), (b,e), (c,f), (f,d), (e,d), 对该图进行深度优先遍历,得到的顶点序列正确的是( D )。Aa,b,e,c,d,f Ba,c

21、,f,e,b,d Ca,e,b,c,f,d Da,e,d,f,c,b8下面哪一方法可以判断出一个有向图是否有环(回路):( B ) A深度优先遍历 B. 拓扑排序 C. 求最短路径 D. 广度优先遍历9. 在图采用邻接表存储时,求最小生成树的 Prim 算法的时间复杂度为( B )。A. O(n) B. O(n+e) C. O(n2) D. O(n3)10. 求解最短路径的Floyd算法的时间复杂度为(D )。AO(n) B. O(n+c) C. O(n*n) D. O(n*n*n)11已知有向图G=(V,E),其中V=V1,V2,V3,V4,V5,V6,V7,E=,G的拓扑序列是( A )。

22、AV1,V3,V4,V6,V2,V5,V7 BV1,V3,V2,V6,V4,V5,V7CV1,V3,V4,V5,V2,V6,V7 DV1,V2,V5,V3,V4,V6,V712若一个有向图的邻接距阵中,主对角线以下的元素均为零,则该图的拓扑有序序列( A )。 A存在 B不存在13一个有向无环图的拓扑排序序列( B )是唯一的。A一定 B不一定14. 在有向图G的拓扑序列中,若顶点Vi在顶点Vj之前,则下列情形不可能出现的是( D )。 AG中有弧 BG中有一条从Vi到Vj的路径 CG中没有弧 DG中有一条从Vj到Vi的路径15. 在用邻接表表示图时,拓扑排序算法时间复杂度为( B )。A. O(n) B. O(ne) C. O(n*n) D. O(n*n*n)16. 关键路径是事件结点网络中( A )。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1