数据结构习题(有答案及解析) 下载本文

内容发布更新时间 : 2024/5/15 9:17:52星期一 下面是文章的全部内容请认真阅读。

WORD格式 可编辑

第1章 绪

1.1 有下列几种二元组表示的数据结构,试画出它们分别对应的图形表示,(1) 集合 并指出它们分别属于何种结构。 (1) A= ( D,R ),其中,D = { a1,a2,a 3,a4 }, R={ } (2) 线性表 (2) B= ( D,R ),其中,D = { a,b,c,d,e}, R={ (a,b),(b,c),(c,d),(d,e)} (3) C= ( D,R ),其中,D = { a,b,c,d,e,f,g}, R={ (d,b),(d,g),(b,a),(b,c),(g,e),(e,f)} (4) K= ( D,R ),其中,D = { 1,2,3,4,5,6}, R={ <1,2>,<2,a3>,<2,4>,<3,4>,<3,5>,<3,6>,<4,5>,<4,6>} (3) 树 1.2 设n为正整数,求下列各程序段中的下划线语句的执行次数。 (1) i=1; k=0 while(i<=n-1) { k+=10*i ; i++; } (3) x=0; y=0; for (int i=1; i<=n; i++) for (int j=1; j<=i; j++) for (int k=1; k<=j; k++) x=x+y; (2) for (int i=1; i<=n; i++) for (int j=1; j<=n; j++) { c[i][j]=0; for (int k=1; k<=n; k++) c[i][j]=c[i][j]+a[i][k]*b[k][j] } 解: (1) n-1 (2) nijniabcde1 25dbcgef3 (4) 图 46 ???1?ni?1j?1k?1nnn3 (3) ???1???j??i?1j?1k?1i?1j?1i(i?1)1n21n1n(n?1)(2n?1)1n(n?1)??i??i ????2222622 i?1i?1i?1n ?n(n?1)(n?2)6 专业知识 整理分享

WORD格式 可编辑

1.3 指出下列个算法的功能,并求其时间复杂度。 (1) int sum1(int n) { int p=1,s=0; for (int i=1;i<=n; i++) { p*= i; s+=p;} return s; } 解: (1) n(2) int sum2 (int n) { int s=0; for ( int i=1; i<=n; i++) { int p=1; for (int j=1; j<=i; j++) p*=j; s+=p; } return s; } ?i! , T(n)=O(n) i?1n(2) ?i!, T(n)=O(n) 2i?11.4 算法设计 有3枚硬币,其中有1枚是假的,伪币与真币重量略有不同。如何借用一架天平,找出伪币?以流程图表示算法。 开始是A=B?C是伪币否是A=C?B是伪币否A是伪币结束上机练习题 要求:给出问题分析、算法描述、源程序及运行截图,在线提交。 1. 设 a, b, c为3个整数,求其中位于中间值的整数。 专业知识 整理分享

WORD格式 可编辑

第2章 线性表

1. 设计算法:在顺序表中删除值为e的元素,删除成功,返回1;int Sqlist::DeleteElem( T e ) 否则,返回0。 { for (i=1; i<=length; i++) // 按值顺序查找 * i可从0开始 if (elem[i-1]= =e) // 找到,进行删除操作 { for ( j=i; j::Locate ( T e ) 解:设表长为n,等概率下,每个元素被定位的概率为:p=1/n 的时间复杂度。 定位成功第i个元素,需比较i次 n11n1n(n?1)n?1 f(n)??i?i????ni?1n?i?1n223.对于有头结点的单链表,分别写出定位成功时,实现下列定位语句序列。 (1) 定位到第i个结点ai; (2) 定位到第i个结点的前驱ai-1; p=head; j=0; while ( p && jnext; j++;} p=head; j=0; while ( p && jnext; j++;} 专业知识 整理分享