数据结构习题集.docx
- 文档编号:29844174
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:56
- 大小:131.48KB
数据结构习题集.docx
《数据结构习题集.docx》由会员分享,可在线阅读,更多相关《数据结构习题集.docx(56页珍藏版)》请在冰豆网上搜索。
数据结构习题集
第一章绪论
一、选择题
1.算法的计算量的大小称为计算的()。
A.效率B.复杂性C.现实性D.难度
2.算法的时间复杂度取决于()
A.问题的规模B.待处理数据的初态C.A和B
3.计算机算法指的是
(1),它必须具备
(2)这三个特性。
(1)A.计算方法B.排序方法
C.解决问题的步骤序列D.调度方法
(2)A.可执行性、可移植性、可扩充性B.可执行性、确定性、有穷性
C.确定性、有穷性、稳定性D.易读性、稳定性、安全性
4.一个算法应该是()。
A.程序B.问题求解步骤的描述C.要满足五个基本特性D.A和C.
5.下面关于算法说法错误的是()
A.算法最终必须由计算机程序实现
B.为解决某问题的算法同为该问题编写的程序含义是相同的
C.算法的可行性是指指令不能有二义性
D.以上几个都是错误的
6.下面说法错误的是()
(1)算法原地工作的含义是指不需要任何额外的辅助空间
(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法
(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界
(4)同一个算法,实现语言的级别越高,执行效率就越低
A.
(1)B.
(1),
(2)C.
(1),(4)D.(3)
7.从逻辑上可以把数据结构分为()两大类。
A.动态结构、静态结构B.顺序结构、链式结构
C.线性结构、非线性结构D.初等结构、构造型结构
8.以下与数据的存储结构无关的术语是()。
A.循环队列B.链表C.哈希表D.栈
9.以下数据结构中,哪一个是线性结构()?
A.广义表B.二叉树C.稀疏矩阵D.串
10.以下那一个术语与数据的存储结构无关?
()
A.栈B.哈希表C.线索树D.双向链表
11.线性表若采用链式存储结构时,要求内存中可用存储单元的地址(①)。
A.必须是连续的B.部分地址必须是连续的
C.一定是不连续的D.连续或不连续都可以
12.在以下的叙述中,正确的是(①)。
A.线性表的线性存储结构优于链表存储结构
B.二维数组是其数据元素为线性表的线性表
C.栈的操作方式是先进先出
D.队列的操作方式是先进后出
13.以下哪个数据结构不是多型数据类型()
A.栈B.广义表C.有向图D.字符串
14.以下数据结构中,()是非线性数据结构
A.树B.字符串C.队D.栈
15.下列数据中,()是非线性数据结构。
A.栈B.队列C.完全二叉树D.堆
16.连续存储设计时,存储单元的地址()。
A.一定连续B.一定不连续C.不一定连续D.部分连续,部分不连续
17.以下属于逻辑结构的是()。
A.顺序表B.哈希表C.有序表D.单链表
18.一个数据对象是()的集合。
A.相同类型的数据项B.相同类型的数据元素
C.不同类型的数据项D.不同类型的数据元素
19.()是数据的基本单位。
A.数据项B.关键字C.数据元素D.数据类型
20.数据结构在计算机中的表示称为数据()。
A.对象B.的存储结构C.类型D.元素
21.下列程序段的时间复杂度为()。
{for(i=0;i<5;i++)
for(j=0;j x=x+1; } A.O(5)B.O(5+n)C.O(n5)D.O(n) 22.数据结构是一门研究非数值计算的程序设计问题中计算机的(①)以及它们之间的(②)和运算等的学科。 ①A.操作对象B.计算方法C.逻辑存储D.数据映象②A.结构B.关系C.运算D.算法 23.数据结构被形式地定义为(K,R),其中K是(①)的有限集合,R是K上的(②)的有限集合。 ①A.算法B.数据元素C.数据操作D.逻辑结构②A.操作B.映象C.存储D.关系 24.在数据结构中,从逻辑上可以把数据结构分成(①)。 A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构25.线性表的顺序存储结构是一种(①)的存储结构,线性表的链式存储结构是一种(②)的存储结构。 A.随机存取B.顺序存取C.索引存取D.散列存取26.算法分析的目的是(①),算法分析的两个主要方面是(②)。 ①A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性②A.空间复杂性和时间复杂性B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性27.计算机算法指的是(①),它必具备输入、输出和(②)等五个特性。 ①A.计算方法B.排序方法 C.解决问题的有限运算序列D.调度方法 ②A.可行性、可移植性和可扩充性 B.可行性、确定性和有穷性 C.确定性、有穷性和稳定性 D.易读性、稳定性和安全性 28.线性表的逻辑顺序与存储顺序总是一致的,这种说法(①)。 A.正确B.不正确 二、填空题 1.数据的物理结构包括的表示和的表示。 2.对于给定的n个元素,可以构造出的逻辑结构有 (1), (2),(3),__(4)四种。 3.数据的逻辑结构是指。 4.一个数据结构在计算机中称为存储结构。 5.抽象数据类型的定义仅取决于它的一组__ (1)_,而与_ (2)_无关,即不论其内部结构如何变化,只要它的_(3)_不变,都不影响其外部使用。 6.数据结构中评价算法的两个重要指标是 7.数据结构是研讨数据的_ (1)_和_ (2)_,以及它们之间的相互关系,并对与这种结构定义相应的_(3)_,设计出相应的(4)_。 8.一个算法具有5个特性: (1)、 (2)、(3),有零个或多个输入、有一个或多个输出。 9.下面程序段的时间复杂度为________。 (n>1) sum=1; for(i=0;sum 10.计算机执行下面的语句时,语句s的执行次数为_______。 FOR(i=l;i FOR(j=n;j>=i;j--) s; 11.下面程序段中带下划线的语句的执行次数的数量级是: i: =1;WHILEi =i*2; 三、基础知识题 1.数据结构是一门研究什么内容的学科? 2.数据元素之间的关系在计算机中有几种表示方法? 各有什么特点? 3.数据类型和抽象数据类型是如何定义的。 二者有何相同和不同之处,抽象数据类型的主要特点是什么? 使用抽象数据类型的主要好处是什么? 4.回答问题(每题2分) (1)在数据结构课程中,数据的逻辑结构,数据的存储结构及数据的运算之间存在着怎样的关系? (2)若逻辑结构相同但存储结构不同,则为不同的数据结构。 这样的说法对吗? 举例说明之。 (3)在给定的逻辑结构及其存储表示上可以定义不同的运算集合,从而得到不同的数据结构。 这样说法对吗? 举例说明之。 (4)评价各种不同数据结构的标准是什么? 5.评价一个好的算法,您是从哪几方面来考虑的? 6.解释和比较以下各组概念 抽象数据类型及数据类型 数据结构、逻辑结构、存储结构 抽象数据类型 算法的时间复杂性(5)算法(6)频度 7.根据数据元素之间的逻辑关系,一般有哪几类基本的数据结构? 8.对于一个数据结构,一般包括哪三个方面的讨论? 9.当你为解决某一问题而选择数据结构时,应从哪些方面考虑? 10.若将数据结构定义为一个二元组(D,R),说明符号D,R应分别表示什么? 11.数据结构与数据类型有什么区别? 12.数据的存储结构由哪四种基本的存储方法实现? 13.若有100个学生,每个学生有学号,姓名,平均成绩,采用什么样的数据结构最方便,写出这些结构? 14.运算是数据结构的一个重要方面。 试举一例,说明两个数据结构的逻辑结构和存储方式完全相同,只是对于运算的定义不同。 因而两个结构具有显著不同的特性,是两个不同的结构。 15.在编制管理通讯录的程序时,什么样的数据结构合适? 为什么? 16.试举一例,说明对相同的逻辑结构,同一种运算在不同的存储方式下实现,其运算效率不同。 17.有实现同一功能的两个算法A1和A2,其中A1的时间复杂度为Tl=O(2n),A2的时间复杂度为T2=O(n2),仅就时间复杂度而言,请具体分析这两个算法哪一个好。 18.设计一数据结构,用来表示某一银行储户的基本信息: 账号、姓名、开户年月日、储蓄类型、存入累加数、利息、帐面总数。 第二章线性表 一、选择题 1.下述哪一条是顺序存储结构的优点? () A.存储密度大B.插入运算方便 B.C.删除运算方便D.可方便地用于各种逻辑结构的存储表示 2.下面关于线性表的叙述中,错误的是哪一个? () A.线性表采用顺序存储,必须占用一片连续的存储单元。 B.线性表采用顺序存储,便于进行插入和删除操作。 C.线性表采用链接存储,不必占用一片连续的存储单元。 D.线性表采用链接存储,便于插入和删除操作。 3.线性表是具有n个()的有限序列(n>0)。 A.表元素B.字符C.数据元素 D.数据项E.信息项 4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。 A.顺序表B.双链表 C.带头结点的双循环链表D.单循环链表 5.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。 A.单链表B.仅有头指针的单循环链表 C.双链表D.仅有尾指针的单循环链表 6.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用()最节省时间。 A.单链表B.单循环链表 C.带尾指针的单循环链表D.带头结点的双循环链表 7.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。 则采用()存储方式最节省运算时间。 A.单链表B.双链表 C.单循环链表D.带头结点的双循环链表 8.静态链表中指针表示的是(). A.内存地址B.数组下标 C.下一元素地址D.左、右孩子地址 9.链表不具有的特点是() A.插入、删除不需要移动元素B.可随机访问任一元素 C.不必事先估计存储空间D.所需空间与线性长度成正比 10.下面的叙述不正确的是() A.线性表在链式存储时,查找第i个元素的时间同i的值成正比 B.线性表在链式存储时,查找第i个元素的时间同i的值无关 C.线性表在顺序存储时,查找第i个元素的时间同i的值成正比 D.线性表在顺序存储时,查找第i个元素的时间同i的值无关 11.双向链表中有两个指针域,llink和rlink分别指向前趋及后继,设p指向链表中的一个结点,现要求删去p所指结点,则正确的删除是()(链中结点数大于2,p不是第一个结点) A.p^.llink^.rlink: =p^.llink;p^.llink^.rlink: =p^.rlink;dispose(p); B.dispose(p);p^.llink^.rlink: =p^.llink;p^.llink^,rlink: =p^.rlink; C.p^.llink^.rlink: =p^.llink;dispose(p);p^.llink^.rlink: =p^.rlink; D.以上A,B,C都不对。 12. (1)静态链表既有顺序存储的优点,又有动态链表的优点。 所以,它存取表中第i个元素的时间与i无关。 (2)静态链表中能容纳的元素个数的最大数在表定义时就确定了,以后不能增加。 (3)静态链表与动态链表在元素的插入、删除上类似,不需做元素的移动。 以上错误的是() A. (1), (2)B. (1)C. (1), (2),(3)D. (2) 13.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为()(1<=i<=n+1)。 A.O(0)B.O (1)C.O(n)D.O(n2) 14.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为()。 A.O(n)O(n)B.O(n)O (1)C.O (1)O(n)D.O (1)O (1) 15.线性表(a1,a2,…,an)以链接方式存储时,访问第i位置元素的时间复杂性为() A.O(i)B.O (1)C.O(n)D.O(i-1) 16.非空的循环单链表head的尾结点p↑满足()。 A.p↑.link=headB.p↑.link=NILC.p=NILD.p=head 17.循环链表H的尾结点P的特点是()。 A.P^.NEXT: =HB.P^.NEXT: =H^.NEXT C.P: =HD.P: =H^.NEXT 18.在一个以h为头的单循环链中,p指针指向链尾的条件是() A.p^.next=hB.p^.next=NILC.p^.next.^next=hD.p^.data=-1 19.完成在双循环链表结点p之后插入s的操作是(); A.p^.next: =s;s^.priou: =p;p^.next^.priou: =s;s^.next: =p^.next; B.p^.next^.priou: =s;p^.next: =s;s^.priou: =p;s^.next: =p^.next; C.s^.priou: =p;s^.next: =p^.next;p^.next: =s;p^.next^.priou: =s; D.s^.priou: =p;s^.next: =p^.next;p^.next^.priou: =s;p^.next: =s; 20.在双向循环链表中,在p指针所指向的结点前插入一个指针q所指向的新结点,其修改指针的操作是()。 注: 双向链表的结点结构为(llink,data,rlink)。 供选择的答案: A.p↑.llink: =q;q↑.rlink: =p;p↑.llink↑.rlink: =q;q↑.llink: =q; B.p↑.llink: =q;p↑.llink↑.rlink: =q;q↑.rlink: =p;q↑.llink: =p↑.llink; C.q↑.rlink: =p;q↑.llink: =p↑.llink;p↑.llink↑.rlink: =q;p↑.llink: =q; D.q↑.llink: =p↑.llink;q↑.rlink: =p;p↑.llink: =q;p↑.llink: =q; 21.在非空双向循环链表中q所指的结点前插入一个由p所指的链结点的过程依次为: rlink(p)←q;llink(p)←llink(q);llink(q)←p;() A.rlink(q)←pB.rlink(llink(q))←pC.rlink(llink(p))←pD.rlink(rlink(p))←p 22.双向链表中有两个指针域,llink和rlink,分别指回前驱及后继,设p指向链表中的一个结点,q指向一待插入结点,现要求在p前插入q,则正确的插入为() A.p^.llink: =q;q^.rlink: =p;p^.llink^.rlink: =q;q^.llink: =p^.llink; B.q^.llink: =p^.llink;p^.llink^.rlink: =q;q^.rlink: =p;p^.llink: =q^.rlink; C.q^.rlink: =p;p^.rlink: =q;p^.llink^.rlink: =q;q^.rlink: =p; D.p^.llink^.rlink: =q;q^.rlink: =p;q^.llink: =p^.llink;p^.llink: =q; 23.在双向链表指针p的结点前插入一个指针q的结点操作是()。 A.p->Llink=q;q->Rlink=p;p->Llink->Rlink=q;q->Llink=q; B.p->Llink=q;p->Llink->Rlink=q;q->Rlink=p;q->Llink=p->Llink; C.q->Rlink=p;q->Llink=p->Llink;p->Llink->Rlink=q;p->Llink=q; D.q->Llink=p->Llink;q->Rlink=q;p->Llink=q;p->Llink=q; 24.在单链表指针为p的结点之后插入指针为s的结点,正确的操作是: ()。 A.p->next=s;s->next=p->next;B.s->next=p->next;p->next=s; C.p->next=s;p->next=s->next;D.p->next=s->next;p->next=s; 25.对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是() A.head==NULLB.head→next==NULLC.head→next==headD.head! =NULL 26.在双向链表存储结构中,删除p所指的结点时须修改指针()。 A.(p^.llink)^.rlink: =p^.rlink(p^.rlink)^.llink: =p^.llink; B.p^.llink: =(p^.llink)^.llink(p^.llink)^.rlink: =p; C.(p^.rlink)^.llink: =pp^.rlink: =(p^.rlink)^.rlink D.p^.rlink: =(p^.llink)^.llinkp^.llink: =(p^.rlink)^.rlink; 二、填空题 1.当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用_______存储结构。 2.线性表L=(a1,a2,…,an)用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要移动元素的个数是________。 3.设单链表的结点结构为(data,next),next为指针域,已知指针px指向单链表中data为x的结点,指针py指向data为y的新结点,若将结点y插入结点x之后,则需要执行以下语句: _______;______; 4.在一个长度为n的顺序表中第i个元素(1<=i<=n)之前插入一个元素时,需向后移动________个元素。 5.在单链表中设置头结点的作用是________。 6.对于一个具有n个结点的单链表,在已知的结点*p后插入一个新结点的时间复杂度为________,在给定值为x的结点后插入一个新结点的时间复杂度为________。 7.根据线性表的链式存储结构中每一个结点包含的指针个数,将线性链表分成________和_______;而又根据指针的连接方式,链表又可分成________和________。 8.在双向循环链表中,向p所指的结点之后插入指针f所指的结点,其操作是_______、_______、_______、________。 9.在双向链表结构中,若要求在p指针所指的结点之前插入指针为s所指的结点,则需执行下列语句: s^.next: =p;s^.prior: =________;p^.prior: =s;________: =s; 10.链接存储的特点是利用________来表示数据元素之间的逻辑关系。 11.顺序存储结构是通过________表示元素之间的关系的;链式存储结构是通过________表示元素之间的关系的。 12.对于双向链表,在两个结点之间插入一个新结点需修改的指针共______个,单链表为_______个。 13.循环单链表的最大优点是: ________。 14.已知指针p指向单链表L中的某结点,则删除其后继结点的语句是: ________ 15.带头结点的双循环链表L中只有一个元素结点的条件是: ________ 16.在单链表L中,指针p所指结点有后继结点的条件是: __ 17.带头结点的双循环链表L为空表的条件是: ________。 18.在单链表p结点之后插入s结点的操作是: _______。 三、解答题 1.线性表有两种存储结构: 一是顺序表,二是链表。 试问: (1)如果有n个线性表同时并存,并且在处理过程中各表的长度会动态变化,线性表的总数也会自动地改变。 在此情况下,应选用哪种存储结构? 为什么? (2)若线性表的总数基本稳定,且很少进行插入和删除,但要求以最快的速度存取线性表中的元素,那么应采用哪种存储结构? 为什么? 2.线性表的顺序存储结构具有三个弱点: 其一,在作插入或删除操作时,需移动大量元素;其二,由于难以估计,必须预先分配较大的空间,往往使存储空间不能得到充分利用;其三,表的容量难以扩充。 线性表的链式存储结构是否一定都能够克服上述三个弱点,试讨论之。 3.若较频繁地对一个线性表进行插入和删除操作,该线性表宜采用何种存储结构? 为什么? 4.线性结构包括______、______、_______和_______。 线性表的存储结构分成______和______。 请用类PASCAL语言描述这两种结构。 5.线性表(a1,a2,…,an)用顺序映射表示时,ai和ai+1(1<=i 链接表示时呢? 6.说明在线性表的链式存储结构中,头指针与头结点之间的根本区别;头结点与首元结点的关系。 7.试述头结点,首元结点,头指针这三个概念的区别. 8.有线性表(a1,a2,…,an),采用单链表存储,头指针为H,每个结点中存放线性表中一个元素,现查找某个元素值等于X的结点。 分别写出下面三种情况的查找语句。 要求时间尽量少。 (1)线性表中元素无序。 (2)线性表中元素按递增有序。 (3)线性表中元素按递减有序。 9.在单链表和双向链表中,能否从当前结点出发访问到任何一个结点? 10.如何通过改链的方法,把一个单向链表变成一个与原来链接方向相反的单向链表? 11.设单链表结点指针域为next,试写出删除链表中指针p所指结点的直接后继的C语言语句。 12.设单链表中某指针p所指结点(即p结点)的数据域为data,链指针域为next,请写出在p结点之前插入s结点的操作(PASCAL语句)。 四、算法设计题 1.假设有两个按元素值递增次序排列的线性表,均以单链表形式存储。 请编写算法将这两个单链表归并为一个按元素值递减次序排列的单链表,并要求利用原来两个单链表的结点存放归并后的单链表。 2.知L1、L2分别为两循环单链表的头结点指针,m,n分别为L1、L2表中数据结点个数。 要求设计一算法,用最快速度将两表合并成一个带头结点的循环单链表。 3.在带头结点的单链表上,给出求表长Length(L)的算法,并加入简要的注释或说明。 4.设单链表具有头结点,且表中元素各不相同,试给出在单链表中查找值为"x"的结点的算法,并加入简要的注释或说明。 5.设单链表具有头结点,且表中元素各不相同,试给出在单链表中删除值为"x"的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 习题集