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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构练习2.docx

1、数据结构练习2课堂练习 一11 判断题(在你认为正确的题后的括号中打,否则打X)。 (1)程序与算法没有区别。 ( X ) (2)程序设计框图就是一种图形化的算法。 ( ) (3)采用程序设计语言编写的程序也是算法。 ( ) (4)一个算法可以没有输入,但不能没有输出。 ( X ) (5)顺序存储结构通过数据元素的地址直接反映数据元素间的逻辑关系。 ( ) (6)链式存储结构通过指针间接地反映数据元素之间的逻辑关系。 ( ) (7)数据的存储结构通常只有顺序存储结构与链式存储结构两种。 ( X ) (8)具有相同逻辑结构的数据可以采用不同的存储结构。 ( ) (9)逻辑结构不相同的数据应该采用

2、不同的存储结构。 ( ) (10)算法分析的前提是算法的时空效率高, ( X ) 12 填空题。 (1)“数据结构”课程研究的主要内容包括数据逻辑结构、数据操作结构和数据存储结构三个方面。 (2)一般情况下,算法独立于具体的计算机硬件,与具体的程序设计语言相关。 (3)一个完整的算法应该具有正确性、确定性、有限性、输入和输出五个特性。P5 (4)数据的逻辑结构可以分为线性结构和非线性结构两大类。 (5)除了顺序存储结构与链式存储结构之外,数据的存储结构通常还有索引和散列结构。 (6)数据的逻辑结构是指研究数据元素之间的关联方式,而存储结构是指数据在计算机中的存放方式。P3 (7)逻辑上相邻的数

3、据元素在物理位置上也相邻是顺序存储结构的特点之一。 (8)为了实现随机访问,线性结构应该采用顺序存储结构。 (9)链式存储结构的主要优点是数据不必连续存放。 (10)算法分析是指算法效率分析,主要从时间效率和空间效率这两个方面对算法进行分析。 13 通常说数据结构是一个二元组(D,R),其中D,R分别代表什么?答:数据结构是一个二元组Data_Structure=(D,R) 其中,D是数据元素的有限集,R是D上关系的有限集。 14 何谓数据的逻辑结构?何谓数据的存储结构?两者有何联系?书上有历年试题 一 1在数据结构中,数据的逻辑结构可以分成(B)A内部结构和外部结构 B线性结构和非线性结构C

4、紧凑结构和非紧揍结构 D动态结构和静态结构2下列说法正确的是(C)P3A数据是数据元素的基本单位B数据元素是数据项中不可分割的最小标识单位C数据可由若干个数据元素构成D数据项可由若干个数据元素构成3数据结构的基本任务是(A)A逻辑结构和存储结构的设计 B数据结构的运算实现C数据结构的评价与选择 D数据结构的设计与实现4在一个具有n个结点的有序单链表中插入一个新结点,并使插入后仍然有序,则该操作的时间复杂性量级为(B)AO(1) BO(n) CO(nlog2n) DO(n2)5.若结点的存储地址与其关键字之间存在某种映射关系,则称这种存储结构为( D ) A.顺序存储结构 B.链式存储结构 C.

5、索引存储结构 D.散列存储结构6、选出正确的表述 (1)顺序存储方式只能用于存储线性结构。错 (2)顺序存储方式的优点是存储密度大, 且插入、删除运用算效率高。错(效率低) (3)链表的每个结点中都恰好包含一个指针。对 (4)散列法存储的基本思想是由关键码的值决定数据的存储地址。对 (5)散列表的结点中只包含数据元素自身的信息, 不包含任何指针。错 (6)负载因子 (装填因子) 是散列法的一个重要参数, 它反映散列表的装满程度。对 (7)栈和队列的存储方式既可是顺序方式, 也可是链接方式。错*(8)用二叉链表法 (llink - rlink法) 存储包含n 个结点的二叉树, 结点的2n个指针区

6、域中有n+1 个为空指针。*(9)用相邻矩阵法存储一个图时, 在不考虑压缩存储的情况下, 所占用的存储空间大小只与图中结点个数有关, 而与图的边数无关。*(10)邻接表法只能用于有向图的存储,而相邻矩阵法对于有向图和无向图的存储都适用。7表示逻辑关系的存储结构可以有四种方式,即顺序存储方式、链式存储方式、索引存储方式和散列存储方式。8下列程序段的时间复杂度为O(n2)。product = 1;执行了1次for (i = n;i0; i-)for (j = i+1; jn; j+)product *=j;n 0n-1 0n-2 1n-3 21 n-20+0+1+2+(n-2)=(1+n-2)*(

7、n_2)/2=(n-1)(n-2)/2 9文件上的两类主要操作为读和写。10文件的基本运算包括浏览和修改两类。11下列程序段的时间复杂性量级是O(n2)。for (i=1;in; i+) for (j=1; ji; j+) t=t+1;1 02 13 2n-1 n-20+1+2+(n-2)=同上12.若一个算法中的语句频度之和为T(n)=3720n+4nlogn,则算法的时间复杂度为O(nlogn)。(影响最大的那个项)第二章 课后练习 例21 已知长度为n的非空线性表A采用顺序存储结构,表中数据元素按值的大小非递减排列,请写出删除该线性表中值相同的多余元素的算法。 算法思想比较简单,只需从表

8、的第一个数据元素开始到最后那个数据元素,反复做以下动作:比较相邻的两个数据元素是否相同,若相同,则删除其中一个;若不相同,则比较下一对相邻元素。算法如下: voidDELETEITEM1(ElemTypeA,ihth) int j,i:0; while(in1) if(Ai!=Ai+1) x若相邻两个元素不相同。 i+; else *若相邻两个元素相同,则删除其中一个* for(j=i+;i1)1 k=0; for(i=1;idata data,则将p指的链结点链接到r所指的链 结点之后,否则将q指的链结点链接到r所指的链结点之后。当其中一个链表为空时,只 需将另一个链表中剩余的链结点都依次链

9、接到r所指的链结点之后即可。初始时,让 listc指向lista和listb所指向的链结点中值小的那一个链结点。 LinkListMERGELIST(LinkListlista,LinkListlistb) LinkList listc,p,q,r; if(lista-dadadata) listc=lista; r=lista; p=lista-link; 1 else listc=listb; r=listb; q=listb-link; x listc指向lista和listb所指结点中值小者x while(p!=NULL&q!=NULL)1 if(p-datadata)x若当前p所指结

10、点的值不大于q所指结点的值x r-link=p; y将p所指结点链接到r所指结点之后x r=p; p=p-link; else r-link:q; 。将q所指结点链接到r所指结点之后 r=q; q=qlink; r-link=p?p:q; x插人剩余链结点x return(listc); x返回合并后的链表第一个链结点地址x 若两个链表的长度分别为n与m,则上述算法的时间复杂度为O(n十m)。在合并两 个链表为一个链表时不需要另外建立新链表的链结点空间,只需将给定的两个链表中的 链结点之间的链接关系解除,重新按照元素值的非递减关系将所有链结点链接成为一个 链表即可。 例25 约瑟夫(Josep

11、hu)问题 已知n个人(不妨以编号1,2,3,n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列,他的下一个人又从1开始报数,数到m的那个人又出列,依此规则重复下去,直到圆桌周围的人全部出歹,J。 例如,当n:8,m4,k二3时,出列的顺序依次为6,2,7,4,3,5,1,8。 解决约瑟夫问题可以利用多种数据结构,但比较简单和自然的方法是利用一个具有 n个链结点、且不带头结点的循环链表。将圆桌周围的每一个人对应着该链表中的一个链结点,某个人出列相当于从链表中删除一个链结点。下面的算法就是在该循环链表中不断地报数,不断地删除一个链结点,直到循环链表中还剩一个链结点时游戏结

12、束。整个算法可以分为三个部分: (1)建立一个具有n个链结点且无头结点的循环链表; (2)确定第一个报数点的位置; (3)不断地从链表中删除一个链结点,直至链表中还有一个链结点。 voidJOSEPHUS(intn,int,m,intk) LinkListp,r,listxNULL; int i; for(i;1;idata:i; if(1ist;NULL) listp; else rlink r=p; p-link:list; p=list; for(i=1;ilink; while(p-link!=p) for(i=1;ilink; r-link=p-link; printf(%4d,p-

13、data); free(p); p=r-link;x申请一个新的链结点。x存放第i个结点的编号。x至此,建立一个循环链表xx此时p指向第一个出发结点。 P指向第m个结点,r指向第m。删除第m个结点,x输出一个结点编号xx释放被删除结点的空间x* p指向新的出发结点x 1个结点x printf(最后被删除的节点是:%4dn,p-data); 习 题 21 判断题(在你认为正确的题后的括号中打,否则打X)。 (1)空线性表的特征是表中数据元素都未赋值。 ( X ) (2)线性表的顺序存储结构必须占用一片地址连续的存储单元。 ( ) (3)用一维数组存储线性表时,表中第i个元素存放在下标为i的数组元

14、素中。 ( X ) (4)采用顺序存储结构的线性表又称为顺序表。 ( ) (5)个数据元素的地址是指该元素占用的若干存储单元的第一个单元的地址。 ( ) (6)线性表占用的存储单元的数量与表中数据元素的类型有关。 ( ) (7)线性表的顺序存储结构要比链式存储结构节省存储空间。 ( ) (8)线性表的链式存储结构要比顺序存储结构节省存储空间。 (X ) (9)若线性表采用顺序存储结构线性表的长度等于表中元素的个数与每个元素所占内存单元之乘积。 ( )(10)若线性表采用顺序存储结构,每个数据元素占用4个存储单元,第12个数据元素的存储地址为144则第1个数据元素的存储地址是101。 (X )

15、a+4(i-1)=144 a+4*11=144 a=100(11)在长度为n的顺序表的第i个位置插入一个数据元素,i的合法值为1iN。 ( X ) 1=idata表示的意思都一样。 ( ) (25)在算法中,符号p-link表示p所指的下一个链结点的地址。 ( ) (26)删除非空线性链表的第一个链结点只需执行语句list=list-link。 ( ) (27)循环链表的最后那个链结点的指针域中存放着链表最前面那个结点的地址。 (X ) (28)设置一个指针变量,它可以遍历整个循环链表。 ( ) (29)双向链表的头结点指针要比线性链表的头结点指针占用更多的存储空间。 ( ) (30)在链结点

16、数目相同的前提下,双向链表占用的空间是线性链表的2倍。 ( X )单项选择题。 B(1)一个顺序表所占用的存储空间大小与无关。 A表的长度 B元素的存放顺序 C元素的类型 D。元素中各字段的类型 A(2)设存储分配是从低地址到高地址进行的。若每个元素占用4个存储单元,则某元素的地 址是指它所占用的单元的 A第1个单元的地址 B第2个单元的地址 C第3个单元的地址 n第4个单元的地址 B(3)若线性表采用顺序存储结构,每个元素占用4个存储单元,第1个元素的存储地址为100, 则第12个元素的存储地址是 。 A112 B144 C148 0412 D(4)若长度为n的线性表采用顺序存储结构,在表的

17、第i个位置插入一个数据元素,i的合法值应该是。 AiO Bin C1in D1in+1 C(5)若长度为n的非空线性表采用顺序存储结构,删除表的第i个数据元素,i的合法值应该是 AiO Bin C1in D。1in十1 A(6)若长度为n的非空线性表采用顺序存储结构,删除表的第i个数据元素,首先需要移动表 中个数据元素。 An-i Bn+i Cn-i+l Dn-i-1 C(7)若长度为n的线性表采用顺序存储结构,在表的第i个位置插入一个数据元素,需要移动 表中个元素。 。 Ai Bn+i Cn-i+l Dn-i-1 A(8)若频繁地对线性表进行插入和删除操作,该线性表应该采用存储结构。 A散列

18、 B顺序 C链式 D索引 C(9)链表中所占用的存储单元地址一定是 。 A无序的 B连续的 C不连续的 D部分连续的 B(10)链表中的每一个链结点所占用的存储单元。 A不必连续 B一定连续 C部分连续 D连续与否无所谓 D(11)与单链表相比,双向链表的优点之一是 。 A插入、删除操作更简单 B可以进行随机访问 C可以省略头结点指针 D顺序访问相邻结点更灵活 A(12)若list是某带头结点的循环链表的头结点指针,则该链表最后那个链结点的指针域中存 放的是。 A1ist的地址 B1ist的内容 C1ist指的链结点的值 D链表第一个链结点的地址 D(13)若list是某带头结点的循环链表的头

19、结点指针,当p(p与list同类型)指向链表的最后那 个链结点时,。 A该结点的指针域为空 Bp为空 Cp的内容与头结点的内容相同 D该链结点指针域内容与list的内容相同 A(14)若listl和list2分别为一个单链表与一个双向链表的第一个结点的指针,则。 A1ist2比listl占用更多的存储单元 B1istl与list2占用相同的存储单元 C1istl和list2应该是相同类型的指针变量D双向链表比单链表占用更多的存储单元 A(15)在表达式中,符号p-link表示。 Ap所指的链结点的指针域(位置) Bp所指的链结点的指针域的内容 Cp所指的链结点的下一个链结点的地址 Dp所指的链

20、结点的下一个链结点的地址(出现在表达式中) B(16)在一个具有n个链结点的线性链表中查找某一个链结点,若查找成功,需要平均比较 个链结点。 An Bn2 C(n+1)2 D(n-1)Q B(17)从一个具有n个链结点的有序线性链表(即链结点按照数据域值有序链接)中插入一个 新的链结点,并且仍然保持链表有序的时间复杂度为。 AO(1) BO(n) CO( n(2) ) DO( log2(n) ) B(18)给定具有n个元素的顺序表,建立一个有序线性链表的时间复杂度为。 AO(1) BO(n) CO( n(2) ) DO( log2(n) ) B(19)在非空线性链表中由p所指的链结点后面插入一

21、个由q所指的链结点的过程是依次执 行。 Aq-link=p;p-link=q; Bq-link=p-link;p-link=q; Cq-link=p-link;p=q; Dp-link=q;q-link=p; C(20)若删除非空线性链表中由p所指的链结点的直接后继链结点的过程是依次执行 _. Ar=p-link;p-link=r;free(r); Br=p-link;p-link=r-link;free(r); Cr=p-link;p-link=r-link;free(p); Dp-link=p-link-link;free(p); B(21)在非空双向循环链表中由q所指的链结点后面插入一个

22、由p所指的链结点的动作依次 为:p-llink=Q;p-rlink=q-rlink;q-rlink=p;。(空白处为一条赋值 语句) Aq-llink=p Bq-rlink-llink=pCp-fiink-llink=p Dp-llink-llink=p B(22)在非空双向循环链表中由q所指的那个链结点前面插入一个p所指的链结点的动作对 应的语句依次为:p-rlink(右边)=Q;p-llink(左边)=q-llink;q-1ink=p;。(空白 处为一条赋值语句) Aq-rlink=p; Bq-llink-rlink=p; Cp-rlink-rlink=p; Dp-llink-rlink=

23、p; A(23)在包含有1000个数据元素的线性表中实现如下四个操作,所需要的执行时间最长的是 一OA 线性表采用顺序存储结构,在第10个元素后面插入一个新的元素 需要移动的元素(1000-10+1) B线性表采用链式存储结构,在第10个元素后面插入一个新的元素(10) C线性表采用顺序存储结构,删除第990个元素(1000-990) D线性表采用链式存储结构,删除p所指的链结点 23填空题。 (1)顺序表是一种顺序存储线性表。 (2)在程序设计中,描述线性表的顺序存储结构一般都用数组。 (3)在顺序表情况下,删除线性表中一个数据元素平均要移动表中近一半的元素。 (4)在顺序表的尾部第n+1处

24、插入一个新的数据元素不必移动任何元素。 (5)若长度为n的线性表采用顺序存储结构,在其第i个位置(1in+1)插入一个新的数据 元素,当不溢出时,首先移动I到n之间的元素,然后在第i的位置写上新元素,最后返回前,线性表长度加1。 (6)若长度为n的线性表采用顺序存储结构,删除其第i个元素(1in),首先将i+1到n移动,然后长度加1。 (7)若长度为n的线性表采用顺序存储结构,插入或删除一个元素的时间复杂度为O(n)。 (8)若某线性表采用顺序存储结构,每个元素占4个存储单元,首地址为100,则第12个元素的存储地址为144。=100+4*(12-1) (9)线性表的链式存储结构主要包括单链表

25、、双向链表和单向循环链表三种形式。 (10)线性表的顺序存储结构是通过数组来直接反映数据元素之间的逻辑关系,而链式存 储结构则是通过指针间接反映数据元素之间的逻辑关系。 (11)根据链数率的多少,可以将链表分为线性链表(单链表)与双向链表。 (12)若对线性表进行的操作主要不是插入和删除,则该线性表宜采用顺序存储结构,若 频繁地对线性表进行插入和删除操作,则该线性表宜采用链式存储结构。 (13)删除由list所指的线性链表的第一个链结点是执行操作r=list-next;list-next=r-next;free(r)。 (14)删除非空线性链表中由q所指的链结点(其直接前驱结点由r指出)的动作是执行语句 r-next=q-next和free(q)。 (15)在线性链表中由q所指的链结点后面插入一个地址为p的新结点的过程是依次执行操 作p-next=q-next和q-next=p。 (16)若p为指向循环链表中某链结点的指针变量,判断循环链表是否只有一个链结点的标志是head-next=head。 (17)删除非空双向链表中由q所指的链结点的过程是执行语句q-prior-next=q-next;q-next-prior=q-prior和free(q)。 (18)在具有n个链结点的链表的已知位置插入一个链结点的时间复杂度为O(1)。 (19)在具有n个链结点的链表中查找一个链结点的时

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

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