易读文库
第一、二章的练习题
一、选择题
1.数据结构可以用二元组来表示,它包括(A)集合K和K上的(C)集合R。 A、数据元素 B、存储结构 C、元素之间的关系 D、逻辑结构 2.数据结构在计算机内存中的表示是指(A)。 A、数据的存储结构B、数据结构
C、数据的逻辑结构D、数据元素之间的关系
3.在数据结构中,与所使用的计算机无关的是数据的(A)结构。 A、逻辑 B、存储C、逻辑和存储D、物理 4.以下说法中正确的是(D)。
A、数据元素是数据的最小单位 B、数据项是数据的基本单位 C、数据结构是带结构的各数据项的集合
D、一些表面上很不相同的数据可以有相同的逻辑结构
5.线性表的顺序存储结构是一种( A )的存储结构,线性表的链式存储结构是一种( B )的存储结构。
A、随机存取 B、顺序存取 C、索引存取 D、散列存取
6.对于一个线性,既要求能够进行较快的插入和删除,又要求存储结构能够反映数据元素之间的逻辑关系,则应该选择( B )。
A、顺序存储方式 B、链式存储方式 C、散列存储方式 D、索引存储方式
7.已知,L是一个不带头结点的单链表,p指向其中的一个结点,选择合适的语句实现在p结点的后面插入s结点的操作( B )。
A、p->next=s ; s->next=p->next ; B、s->next=p->next ; p->next=s ; C、p->next=s ; s->next=p ; D、s->next=p ; p->next=s ; 8.单链表中各结点之间的地址( D )。该题做了修改!!! A、必须连续 B、部分地址必须连续 C、必须不连续 D、连续与否都可以
9.在一个长度为n的顺序表中向第i个元素(0
A、n-i B、n-i+1 C、n-i-1 D、i
10.需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是( B )。 A、单链表 B、静态链表 C、线性链表 D、顺序存储结构
11.在一个长度为n(n>1)的单链表上,设有头和尾两个指针,执行( B )操作与链表的长度有关。 A、删除单链表中的第一个元素 B、删除单链表中的最后一个元素 C、在单链表第一个元素前插入一个新元素
易读文库
D、在单链表最后一个元素后插入一个新元素
12.在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是( A )。 A、访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n) B、在第i个结点后插入一个新结点(1≤i≤n)
C、删除第i个结点(1≤i≤n) D、将n个结点从小到大排序
13.向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动( B )个元素。 A、8 B、63.5 C、63 D、7 14.单链表的存储密度( C )
A、大于1; B、等于1; C、小于1; D、不能确定 15、链表不具备的特点( A )。
A、可随机访问任结点 B、插入删除不需要移动元素 C、不必事先估计存储空间 D、所需空间与其长度成正比 16、非空的单循环链表head的尾结点(由p所指向)满足( C )。
A、p->NULL B、p==NULL C、p->next==head D、p==head
17.若某表最常用的操作是在最后一个结点之后插入一个新结点或删除最后一个结点,则采用( D )存储方式最节省时间。
A、单链表 B、给出表头结点的单循环链表 C、双向链表 D、带头结点的双循环链表
18、在一个长度为n(n>1)的单链表上,设有头和尾两个指针,执行( )操作与链表长度有关。 A、删除单链表中第一个结点 B、删除单链表是最后一个结点
C、在单链表第一个结点前插入一个新结点 D、在单链表最后一个结点后插入一个新结点 19、设有两个长度为n的不带头结点的单链表,结点类型相同。其中,一个单链表h1是循环链表,而另一个单链表h2是非循环链表,则( B )。
A、对于两个链表来说,删除第一个结点的操作,其时间复杂度都是O(1) B、对于两个链表来说,删除最后一个结点的操作,其时间复杂度都是O(n) C、循环链表要比非循环链表占用更多的内存空间 D、h1和h2是不同类型的变量
20、下面程序段的时间复杂度为( C )。 void prime(int n) { int i=2;
shile(n%i!=0&&i if(i*1.0>sqrt(n)) cout< A、O(1) B、O(n) C、O(n) D、O(n) 2 二、填空题 易读文库 1.线性结构中元素之间存在(1:1)关系,树型结构中元素之间存在( 1:n)关系,图型结构中元素之间存在(m:n)关系。 2.一个算法的时间复杂度是该算法包含的(简单操作或原操作)的多少,一个算法的空间复杂度是指该算法在运行过程中临时占用的(存储空间 )的大小。 3.当一个算法的时间复杂度与问题的n大小无关时,则表示为(o(1));成正比时,表示为(o(n)),成平方时,则表示为(0(n))。 4.顺序存储的长度为n的线性表,在任何位置上插入和删除操作的时间复杂度基本上都一样。插入一个元素大约移动表中的(n/2)个元素,删除一个元素时大约移动表中的( (n-1)/2)个元素。 5.在线性表的顺序存储方式中,元素之间的逻辑关系是通过(物理位置 )来体现的;在链式存储方式,元素之间的逻辑关系是通过( 指针)体现的。 6.对于一个长度为n的单链表,在已知的p结点后面插入一个新结点的时间复杂度为( o(1) ),在p结点之前插入一个新结点的时间复杂度为( o(n) ),在给定值为e的结点之后插入一个新结点的时间复杂度为( o(n) )。 7.在双向链表中,每个结点包含两个指针域,一个指向( 该结点的前驱 )结点,另一个指向( 该结点的后继 )结点。 8.对于循环链表来讲,逐个访问各个结点的结束判断条件是(最后一个结点的next=头指针 )。 9. 在树形结构中,树根结点没有( 前驱 )结点,其余每个结点有且只有( 一个)个前驱结点;叶子结点没有( 后继 )结点,其余每个结点的后续结点数可以( 0个或多个 )。 10. 在图形结构中,每个结点的前驱结点数和后续结点数可以( 0个或多个 )。 2 三、应用题 1.阅读下面程序段,计算它的时间复杂度,要求写出计算过程。 (1) for (j=1;j<=n;j++) for (k=1;k<=m;k++) { ++x; s+=x; } 解: ??1=?m=n*m 时间复杂度:o(n*m) j?1k?1j?1nmn(2) i=s=0; while(s { i++; s+=i; } 解:假设共循环x次,则 循环次数 1 2 3 …… x i 1 2 3 …… x s +1 1+2 1+2+3 …… 1+2+3+……+x 循环结束条件:(1+2+3+……+x) while(i<=n) i=i*3; 易读文库 解:计算过程与上一题类似,所以省略。时间复杂度:o(log3n) (4) fact(int n) { if(n<=1) return 1; //语句1 else return fact(n-1)*n; //语句2 } 解:语句1的运行时间是o(1),语句2的运行时间是fact(n-1)的运行时间T(n-1)+乘法运行o(1)。 所以 T(n)=T(n-1)+ o(1) =T(n-2)+ o(1)+ o(1)=T(n-2)+ 2*o(1) ...... =T(1)+ (n-1)*o(1) //T(1)表示n=1时的运行时间,等于o(1) =n*o(1)= o(n) 时间复杂度:o(n) (5) for (j=1;j<=n;j++) for (k=1;k<=j;k++) { ++x; s+=x; } 解: ??1=?j=1+2+3+……+n=n(n+1)/2 时间复杂度:0(n) 2 njnj?1k?1j?12.给定的数据结构如图所示,回答以下问题:(1)用二元组表示法给出该数据结构的逻辑结构?(2)判断属于哪一种逻辑结构? 1 2 4 b a c d f g i e h 3 5 6 (1)二元组表示 A=(K,R),其中: K={1,2,3,4,5,6} R={r} r={<1,2>,<2,3>,<3,4>,<4,5>,<5,6>} 逻辑结构:线性结构(一对一关系) (2)二元组表示 A=(K,R),其中: K={a,b,c,d,e,f,g,h,i} R={r} r={,, 3.对下列几种用二元组表示的数据结构,画出对应的逻辑结构图形表示,并指出属于哪一种结构。 (1)A=(K,R),其中: 易读文库 K={a,b,c,d,e,f,g,h} R={r} r={,, abcdfehg 逻辑结构:顺序结构 (2)B=(K,R),其中: K={1,2,3,4,5,6} R={r} r={(1,2),(2,3),(2,4),(3,4),(3,5),(3,6),(4,5),(4,6)} 123546 逻辑结构:图型结构 (3)C=(K,R),其中: K={48,25,64,57,82,36,75} R={r1,r2} r1={<25,36>,<36,48>,<48,57>,<57,64>,<64,75>,<75,82>} r2={<48,25>,<48,64>,<64,57>,<64,82>,<25,36>,<82,75>} 25364857647582 其中,实线表示关系r1,虚线表示关系r2 逻辑结构:关系r1表示线性结构,关系r2表示树型结构 四、算法题 1.编写有序表的插入算法,包括顺序表和单链表。 顺序表: typedef struct { DataType data[MAXSIZE]; int last; }SeqList; int Insert_SeqList_sort(SeqList &L,DataType x) { if(MAXSIZE<=L.last+1) return -1;
练习题(第1、2章)-参考答案
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)