数据结构习题集包含全部答案.docx
- 文档编号:29570794
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:83
- 大小:191.02KB
数据结构习题集包含全部答案.docx
《数据结构习题集包含全部答案.docx》由会员分享,可在线阅读,更多相关《数据结构习题集包含全部答案.docx(83页珍藏版)》请在冰豆网上搜索。
数据结构习题集包含全部答案
数据结构习题集(自编)
第一章绪论
一、选择题
1.数据结构是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的()和运算的学科。
A.结构B.关系C.运算D.算法
2.在数据结构中,从逻辑上可以把数据结构分成()。
A.动态结构和静态结构B.紧凑结构和非紧凑结构
C.线性结构和非线性结构D.逻辑结构和存储结构
3.线性表的逻辑顺序和存储顺序总是一致的,这种说法()。
A.正确B.不正确C.无法确定D.以上答案都不对
4.算法分析的目的是()。
A.找出算法的合理性B.研究算法的输人与输出关系
C.分析算法的有效性以求改进D.分析算法的易懂性
5.算法的时间复杂度取决于()
A.问题的规模B待处理数据的初态C.A和B
6.一个算法应该是()。
A.程序B.问题求解步骤的描述
C.要满足五个基本特性D.A和C.
7.下面关于算法说法错误的是()
A.算法最终必须由计算机程序实现
B.为解决某问题的算法与为该问题编写的程序含义是相同的
C.算法的可行性是指指令不能有二义性
D.以上几个都是错误的
8.以下与数据的存储结构无关的术语是()。
A.循环队列B.链表C.哈希表D.栈
9.在下面的程序段中,对x的赋值语句的频度为()
for(i=0;i for(j=0;j x=x+1; A.2nB.nC.n2D.log2n 10.以下数据结构中,()是非线性数据结构 A.树B.字符串C.队列D.栈 11.下列数据中,()是线性数据结构。 A.哈夫曼树B.有向无环图C.二叉排序树D.栈 12.以下属于逻辑结构的是()。 A.顺序表B.哈希表C.有序表D.单链表 二、填空题 1、_______是信息的载体,是对客观事物的符号表示,它能够被计算机识别、存储、加工和处理,________是对能够有效的输人到计算机中并且能够被计算机处理的符号的总称。 (数据、数据) 2、数据元素是数据的______,有些情况下也称为元素、结点、顶点、记录等。 (基本单位) 3、________是数据不可分割的最小单元,是具有独立含义的最小标识单位。 例如构成一个数据元素的字段、域、属性等都可称之为________。 (数据项、数据项) 4、数据的逻辑结构是指数据之间的________。 逻辑结构是从________上描述数据,它与具体存储无关,是独立于计算机的。 因此逻辑结构可以看作是从具体问题抽象出来的______________。 (逻辑关系、逻辑关系、数学模型) 5、数据的________指数据元素及其关系在计算机存储器内的表示。 _________是逻辑结构在计算机里的实现,也称之为映像。 (存储结构、存储结构) 6、数据逻辑结构可以分为四种基本的类型,_______结构中的元素除了仅仅只是同属于一个_________________,不存在什么关系。 (集合、集合) 7、数据逻辑结构的四种基本类型中,________中的元素是一种一对一的关系,这种结构的特征是: 若结构是非空集,则有且只有一个开始结点和一个终端结点,并且所有结点最多只能有一个直接前驱和一个直接后继。 (线性结构) 8、数据逻辑结构的四种基本类型中,____________中的元素是一种一对多的关系。 (树形结构) 9、图型结构或图状结构是一种________的关系。 在这种逻辑结构中,所有结点均可以有多个前驱和多个后继。 (多对多) 10、有时也可将树型结构、集合和图型结构称为__________,这样数据的逻辑结构就可以分为__________和________两大类。 (非线性结构、线性结构、非线性机构) 11、____________方式是指逻辑上相邻的结点被存储到物理上也相邻的存储单元中。 这种存储结构只存储结点的数值,不存储结点之间的关系,结点之间的关系是通过存储单元的相邻关系隐含的表示出来的。 (顺序存储) 12、_______方式是种存储方法,不要求逻辑上相邻的结点在物理上也相邻,即数据元素可以存储在任意的位置上。 (链式存储) 13、_________方式是利用结点关键字的值直接计算出该结点存储单元地址,然后将结点按某种方式存人该地址的一种方法。 (散列存储或哈希存储) 14、所谓算法(Algorithm)是对特定问题求解步骤的一种描述,它是指令的其中每个指令表示一个或多个操作。 算法的五个重要特性是__________、__________、__________、__________和__________。 (有限序列、有穷性、确定性、可行性、输入、输出) 15、算法的_______性是指算法必须能够在执行有限个步骤之后结束,并且每个步骤都必须在有穷的时间内完成。 (有穷性) 16、算法的________性是指算法中的每一个步骤必须是有明确定义的,不允许有模棱两可的解释,也不允许有多义性。 并且,在任何条件下,算法只能有惟一的一条执行路径,即只要输人是相同的就只能得到____________的输出结果。 (确定性、相同) 17、算法的____________性又称为算法的能行性,是指算法中描述的操作是可以通过已经实现的基本运算执行有限次来实现。 (可行性) 18、判断一个算法的好坏主要以下几个标准: ________、________、________、_________。 (正确性、可读性、健壮性、时间效率和空间效率) 19、算法分析是对一种算法所消耗的计算机资源的估算,其中包括计算机_________的长短和___________________的大小。 (运行时间、所占据空间) 20、空间复杂度(SPaceComPlexity)也是度量一个算法好坏的标准,它所描述的是算法在运行过程中所占用_____________的大小。 (存储空间) 三、判断题 1.顺序存储方式只能用于存储线性结构。 (×) 2.数据元素是数据的最小单位。 (×) 3.算法的优劣与算法描述语言无关,但与所用计算机有关。 (×) 4.健壮的算法不会因非法的输入数据而出现莫名其妙的状态。 () 5.数据的逻辑结构是指各元素之间的逻辑关系,是根据用户需要而建立的。 6.数据结构、数据元素、数据项在计算机中的映像分别称为存储结构、结点、数据域。 () 7.数据的物理结构是指数据在计算机中实际的存储形式。 () 8.具有存取任一元素的时间相等这一特点的存储结构称为随机存取结构。 9.算法实际上就是程序,程序也一定是算法。 (×) 10.在顺序存储结构中,有时也存储数据结构中元素之间的关系。 (×) 11.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。 (×) 12.数据结构的基本操作的设置的最重要的准则是,实现应用程序与存储结构的独立。 () 13.数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的储存结构。 (×) 14.判断一个算法的好坏主要以下几个标准: 正确性、有穷性、健壮性和可行性。 (×) 15.算法的时间复杂度T(n)=O(f(n))表示随问题规模n的增大,算法执行时间的增长率与函数f(n)的增长率相同。 () 四、综合题 1.用大O形式表示下面算法的时间复杂度: for(i=0;i<m;i十十) for(j=0;j<n;j++) A[i][j]=i*j; 2.写出下面算法的时间复杂度: i=0; s=0; while(s<n) {i++; s+=i; } 3.写出以下算法的时间复杂度: for(i=0;i<m;i++) for(j=0;j<t;j++) c[i][j]=0; for(i=0;i<m;i++) for(j=o;j for(k=0;k<n;k++) c[i][j]+=a[i][k]*b[k][j]; 4.写出下面算法的时间复杂度: i=1; while(i<=n) i=i*3; 5.求下面函数中各条语句的频度和算法的时间复杂度: prime(intn) { inti=2; while((n%i)! =0&&i<sqrt(n)) i++; if(i>sqrt(n)) printf(”%disaprimenumber.\n”,n); else printf(”%disnotaprimenumber.\n”,n);} 1.该算法的时间复杂度为: O(m×n)。 2.该算法的时间复杂度为: O( ) 3.该算法的时间复杂度为: O(m×n×t)。 4.该算法的时间复杂度为: log3(n)。 5.该算法的时间复杂度为: O( )。 6.将下列函数,按它们在n→∝时的无穷大阶数,从小到大排序。 n,n-n3+7n5,nlogn,2n/2,n3,logn,n1/2+logn,(3/2)n,,n! n2+logn 从小到大排列为: logn,n1/2+logn,n,nlogn,n2+logn,n3,n-n3+7n5,2n/2,(3/2)n,n! 第二章线性表 一、选择题 1.在一个长度为n的顺序表中删除第i个元素(0 A.n-iB.n-i+1C.n-i-1D.i+1 2.从一个具有n个元素的线性表中查找其值等于x的结点时,在查找成功的情况下,需平均比较()个元素结点。 A.n/2B.nC.(n-1)/2D.(n+1)/2 3.对一个具有n个元素的线性表,建立其单链表的时间复杂度为()。 A.O(n)B.O (1)C.O(n2)D.O(long2n) 4.线性表采用链式存储时,其地址()。 A.必须是连续的B.一定是不连续的 C.部分地址必须连续D.连续与否均可以 5.在一个具有n个结点的有序单链表中插人一个新的结点,使得链表仍然有序,该算法的时间复杂度是()。 A.O(long2n)B.O(l)C.O(n2)D.O(n) 6.线性表是()。 A.一个有限序列,可以为空B.一个有限序列,不可以为空 C.一个无限序列,可以为空D.一个无限序列,不可以为空 7.在一个长度为n的顺序表中,向第i个位置(0一1<n+1)插入一个新元素时,需要向后移动()个元素。 A.n-iB.n-i+1C.n-i-1D.i+1 8.如果某链表中最常用的操作是取第i个结点及其前驱,则采用()存储方式最节省时间。 A.单链表B.双向链表C.单循环链表D.顺序表 9.一个顺序存储线性表的第一个元素的存储地址是90,每个元素的长度是2,则第6个元素的存储地址是()。 A.98B.100C.102D.106 10.在顺序存储的线性表(a1……an)中,删除任意一个结点所需移动结点的平均移动次数为() A.nB.n/2C.(n-1)/2D.(n+l)/2 11.在线性表的下列存储结构中,读取第i个元素花费的时间最少的是()。 A.单链表B.双链表C.循环链表D.顺序表 12.若某链表中最常用的操作为在最后一个结点之后插入一个结点和删除最后一个结点,则采用()存储方式最节省时间。 A.双链表B.单链表C.单循环链表D.带头结点的双循环链表 13.在单链表中删除指针p所指结点的后继结点,则执行()操作。 A.p->next=p->next->next B.p->next=p->next C.p=p->next->next D.p=p->next;p->next=p->next->next 14.在一个单链表中,已知q所指结点是p所指结点的前驱,若在q和p之间插入s所指的结点,则执行()操作。 A.s->next=p->next;p->next=s; B.q->next=s;s->next=p; C.p->next=s->next;s->next=p; D.p->next=s;s->next=q; 15.在单链表中附加头结点的目的是为了()。 A.保证单链表中至少有一个节点 B.标识单链表中首结点的位置 C.方便运算的实现 D.说明单链表是线性表的链式存储 16.循环单链表的主要优点是()。 A.不再需要头指针了 B.从表中任意一个结点出发都能扫描到整个链表 C.已知某个结点的位置后,能够容易找到它的前驱 D.在进行插入、删除操作时,能更好地保证链表不断开 17.非空的循环单链表L的尾结点p满足()。 A.p->next=NULLB.p=NULLC.p->next=LD.p=L 18.在双向循环链表中,在p指针所指向的结点前插入一个指针q所指向的新结点,其修改指针的操作是()。 注: 双向链表的结点结构为(prior,data,next)。 供选择的答案: A.p->prior=q;q->next=p;p->prior->next=q;q->prior=q; B.p->prior=q;p->prior->next=q;q->next=p;q->prior=p->prior; C.q->next=p;q->prior=p->prior;p->prior->next=q;p->prior=q; D.q->prior=p->prior;q->next=p;p->prior=q;p->prior=q; 19.在双向链表存储结构中,删除p所指的结点时须修改指针()。 A.p->prior->next=p->next;p->next->prior=p->prior; B.p->prior=p->prior->prior;p->prior->next=p;(删p的前趋) C.p->next->prior=p;p->next=p->next->next; D.p->next=p->prior->prior;p->prior=p->next->next; 二、填空题 1.线性表(LinearList)是最简单、最常用的一种数据结构。 线性表中的元素存在着__________的相互关系。 (一对一) 2.线性表中有且仅有一个开始结点,表中有且仅有一个终端结点,除开始结点外,其他每个元素有且仅有一个__________,除终端结点外,其他每个元素有且仅有一个______。 3.线性表是n(n>=0)个数据元素的________。 其中n为数据元素的个数,定义为线性表的__________。 当n为零时的表称为_________。 4.所谓顺序表(SequentialLISt)是线性表的__________,它是将线性表中的结点按其____________依次存放在内存中一组连续的存储单元中,使线性表中相邻的结点存放在____________的存储单元中。 5.单链表不要求逻辑上相邻的存储单元在物理上也一定要相邻。 它是分配一些_______的存储单元来存储线性表中的数据元素,这些存储单元可以分散在内存中的_________的位置上,它们在物理上可以是一片连续的存储单元,也可以是__________的。 因此在表示线性表这种数据结构时,必须在存储线性表元素的同时,也存储线性表的。 6.线性表的链式存储结构的每一个结点(Node)需要包括两个部分: 一部分用来存放元素的数据信息,称为结点的_________;另一部分用来存放元素的指向直接后继元素的指针(即直接后继元素的地址信息),称为________或____________。 7.线性链表的逻辑关系是通过每个结点指针域中的指针来表示的。 其逻辑顺序和物理存储顺序不再一致,而是一种_________存储结构,又称为__________。 8.如果将单链表最后一个结点的指针域改为存放链表中的头结点的地址值,这样就构成了______________。 9.为了能够快速地查找到线性表元素的直接前驱,可在每一个元素的结点中再增加一个指向其前驱的指针域,这样就构成了___________。 10.双向链表某结点的指针P,它所指向结点的后继的前驱与前驱的后继都是p_______。 11.在单链表中,删除指针P所指结点的后继结点的语句是____________。 12.在双循环链表中,删除指针P所指结点的语句序列是P->prior->next=p->next及__________。 13.单链表是___________的链接存储表示。 14.可以使用___________表示树形结构。 15.向一个长度为n的向量的第i个元素(l≤i≤n+1)之前插人一个元素时,需向后移动__________个元素。 16.删除一个长度为n的向量的第i个元素(l≤i≤n)时,需向前移动_______个元素。 17.在单链表中,在指针P所指结点的后面插人一个结点S的语句序列是__________。 18.在双循环链表中,在指针P所指结点前插人指针S所指的结点,需执行语句_______。 19.取出广义表A=((x,(a,b,c,d))中原子c的函数是_________。 20.在一个具有n个结点的有序单链表中插人一个新结点并使之仍然有序的时间复杂度为_______________。 21.写出带头结点的双向循环链表L为空表的条件________________。 22.线性表、栈和队列都是_________________结构。 23.向栈中插人元素的操作是先移动栈_____________针,再存人元素。 1.一对一 2.直接前驱、直接后继 3.有限序列、长度、空表 4.顺序存储结构、逻辑顺序、地址相邻 5.任意、任意、不连续、逻辑关系 6.数据域、指针域、链域 7.非顺序、非顺序映像 8.循环链表 9.双向链表 10.所指向的结点本身 11.P->next=p->next->next 12.P->next->prior=P->prior 13.线性表 14.双链表 15.n-i+1 16.n-i 17.S->next=P->next;P->next=S 18.p->prior->next=S; s->prior=p->prior; s->next=p; p->prior=s; 19.head(tail(tail((head(tail(head(A)))))) 20.O(n) 21.(L==L->Next)&&(L==L->Prior) 22.线性 23.顶 三、判断题 1.线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。 (×) 2.在具有头结点的链式存储结构中,头指针指向链表中的第一个数据结点。 (×) 3.顺序存储的线性表不可以随机存取。 (×) 4.单链表不是一种随机存取结构。 () 5.顺序存储结构线性表的插入和删除运算所移动元素的个数与该元素的位置无关。 (×)6.顺序存储结构是动态存储结构,链式存储结构是静态存储结构。 (×) 7.线性表的长度是线性表所占用的存储空间的大小。 (×) 8.双循环链表中,任意一结点的后继指针均指向其逻辑后继。 (×) 9.线性表的惟一存储形式是链表。 (×) 1.错误: 链表存储中,结点之间可以连续也可以不连续,但结点内部是连续的。 2.错误: 头指针指向头结点而不是数据结点。 3.错误: 顺序存储的线性表可以随机存取。 4.正确。 5.错误。 6.错误: 顺序存储结构是静态存储结构,链式存储结构是动态存储结构。 7.错误: 先行表的长度是线性表中结点的个数。 8.错误: 注意最后一个结点。 9.错误: 也可以有顺序存储的形式。 第三章栈和队列 一、选择题 l.一个栈的序列是: a,b,c,d,e,则栈的不可能输出的序列是()。 A.a,b,c,d,eB.d,e,c,b,aC.d,c,e,a,bD.e,d,c,b,a 2.若一个栈的输人序列是1,2,3,…,n,输出序列的第一个元素是n,则第k个输出元素是()。 A.kB.n-k-1C.n-k+1D.不确定 3.判定一个栈S(最多有n个元素)为空的条件是()。 A.S->top! =0B.S->top==0C.S->top! =nD.S->top==n 4.判定一个栈S(最多有n个元素)为满的条件是()。 A.S->top! =0B.S->top==0C.S->top! =nD.S->top==n 5.向一个栈顶指针为top的不带头结点的链栈中插人一个*S结点的时候,应当执行语句()。 A.top->next=S;B.S->next=top;top=S; C.S->next=top->next;top->next=S;D.S->next=top;top=S->next; 6.向一个带头结点、栈顶指针为top的链栈中插人一个*S结点的时候,应当执行语句()。 A.top->next=S;B.S->next=top;top=S; C.S->next=top->next;top->next=S;D.S->next=top;top=S->next; 7.判定一个队列Q(最多有n个元素)为空的条件是()。 A.Q->rear-Q->front==nB.Q->rear-Q->front+1==n C.Q->rear==Q->frontD.Q->rear+1==Q->front 8.判定一个队列Q(最多有n个元素)为满的条件是()。 A.Q->rear-Q->front==nB.Q->rear-Q->front+1==n C.Q->rear==Q->frontD.Q->rear+1==Q->front 9.判定一个循环队列Q(最多有n个元素)为空的条件是()。 A.Q->rear==Q->frontB.Q->rear==Q->front+l C.Q->front==(Q->rear+1)%nD.Q->front==(Q->rear-1)%n 10.判定一个循环队列Q(最多有n个元素)为满的条件是()。 A.Q->rear==Q->frontB.Q->rear==Q->front+l C.Q->front==(Q->rear+1)%nD.Q->front==(Q->rear-1)%n 11.在一个链队列中,假定front和rear分别为头指针和尾指针,则插入一个结点*S的操作是()。 A.front=front->nextB.S->next=rear;rear=S C.rear->next=S;rear=SD.S->next=front;front=S 12.在一个链队列中,假定front和rear分别为头指针和尾指针,删除一个结点的操作是()。 A.front=front->nextB.rear=rear->next C.rear->next=frontD.front->next=rear 13.栈与队列都是()。 A.链式存储的线性结构B.链式存储的非线性结构C.限制存取点的线性结构D.限制存取点的非线性结构 14.若进
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 习题集 包含 全部 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)