数据结构第二章作业自测
数据结构练习题第二章答案

数据结构练习题第二章答案一、选择题1. 在数据结构中,线性结构的特点是什么?A. 元素之间存在一对一的关系B. 元素之间存在一对多的关系C. 元素之间存在多对多的关系D. 元素之间存在一对一或一对多的关系答案:D2. 栈(Stack)是一种特殊的线性表,其特点是:A. 允许在表的一端进行插入和删除操作B. 允许在表的两端进行插入和删除操作C. 只能在表的两端进行插入和删除操作D. 只能在表的中间进行插入和删除操作答案:A3. 队列(Queue)与栈的主要区别在于:A. 队列是先进先出(FIFO),栈是先进后出(LIFO)B. 栈是先进先出(FIFO),队列是先进后出(LIFO)C. 队列和栈都是先进先出(FIFO)D. 队列和栈都是先进后出(LIFO)答案:A二、简答题1. 什么是链表?链表有哪些基本操作?答案:链表是一种由一系列节点组成的线性数据结构,每个节点包含数据部分和指向下一个节点的指针。
链表的基本操作包括插入节点、删除节点、查找节点和遍历链表。
2. 线性表的顺序存储结构和链式存储结构有何区别?答案:顺序存储结构使用连续的存储单元来存储数据元素,如数组。
链式存储结构不要求数据元素在存储空间中连续,每个元素包含指向下一个元素的指针,如链表。
三、编程题1. 编写一个函数,实现在单链表中插入一个新节点到指定位置。
```c#include <stdio.h>#include <stdlib.h>typedef struct Node {int data;struct Node *next;} Node;Node* createNode(int data) {Node *newNode = (Node*)malloc(sizeof(Node));newNode->data = data;newNode->next = NULL;return newNode;}void insertNode(Node head, int position, int data) {Node *newNode = createNode(data);if (position == 0) {newNode->next = *head;*head = newNode;} else {Node *current = *head;for (int i = 0; current != NULL && i < position - 1; i++) {current = current->next;}if (current == NULL) return; // Position is greater than the number of nodesnewNode->next = current->next;current->next = newNode;}}int main() {Node *head = NULL;insertNode(&head, 0, 10);insertNode(&head, 1, 20);// Print the list to verify the insertionNode *current = head;while (current != NULL) {printf("%d ", current->data);current = current->next;}return 0;}```四、分析题1. 分析栈的后进先出(LIFO)特性在实际应用中的优势和局限性。
数据结构作业答案第二章作业答案

第二章作业解答一、基础知识题2.1试描述头指针、头结点、开始结点的区别,并说明头指针和头结点的作用。
答:头指针是指向头结点或开始结点的指针,我们就是靠它来描述和访问整个线性链表,如果失去了头指针,整个线性链表也就无法访问,因而线性链表的存在与否也就失去了意义。
头结点是为了对线性链表操作的方便而引入的,引入头结点主要有两方面的方便,一是当在线性链表的第一个位置进行操作时无需做特殊处理;二是就整个线性链表而言无论空表和非空表,对表的操作可以保持一致性。
头结点的数据域为空而指针域指向开始结点,如果存在头结点,那么线性链表的头指针就指向它。
开始结点是真正存储数据的第一个线性链表的结点,如果有头结点的话,头结点的指针域就指向它;如果没有头结点的话,头指针就指向它。
2.2何时选用顺序表、何时选用链表作为线性表的存储结构为宜?答:从空间复杂度上考虑:顺序表的存储空间是静态分配的,链表的存储空间是动态分配的,顺序表的存储密度为1,链表的存储密度小于1,因此如果表的长度变化较大,事先难以确定表的规模宜采用链表,否则用顺序表。
从时间复杂度上考虑:顺序表的最大优点是,它是一种随机存取结构,查找算法的时间复杂度低;最大缺点是插入删除操作的时间复杂度较链表高;链表的最大优点是插入删除操作的时间复杂度低;最大缺点是查找算法的时间复杂度较顺序表高。
因此对于频繁进行插入和删除的线性表,宜采用链表做存储结构。
若插入和删除操作较少,而查找操作较多时宜采用顺序表。
2.3在单链表、双链表和单循环链表中,若仅知道指针p指向某结点,不知道头指针,能否将结点*p从相应链表中删除?若可以,其时间复杂度各为多少?答:要删除某结点,我们需要知道该结点的前后两个结点。
在单链表中,不知道头指针,则无法访问该结点的前一个结点,因此无法删除。
在双链表中可以删除,时间复杂度为O(1)。
在单循环链表中可以删除,时间复杂度为O(n)。
2.4下述算法的功能是什么?LinkList Demo(LinkList L){ //L是无头结点的单链表ListNode *Q,*P;if(L&&L->next){Q=L;L=L->next;P=L;while(P->next)P=P->next;P->next=Q;Q->next=NULL;}return L;}//Demo功能是:如果线性表的长度大于1,则将线性表第一个位置上结点放到最后一个位置上。
数据结构Java版第二章习题

数据结构Java版第二章习题在学习数据结构的过程中,第二章的习题往往是巩固和深化对相关概念理解的重要环节。
这一章可能涵盖了诸如数组、链表、栈、队列等基本数据结构的知识。
先来说说数组,这是一种最简单也最常见的数据结构。
在 Java 中,数组是一组相同类型元素的有序集合。
它的优点很明显,比如可以通过索引快速访问元素,查找操作的时间复杂度为 O(1)。
但缺点也不能忽视,比如数组的长度固定,插入和删除元素可能需要移动大量元素,导致时间复杂度较高。
来看一道关于数组的习题:给定一个整数数组,找出其中出现次数最多的元素。
这就需要我们遍历数组,使用一个辅助的数据结构(比如哈希表)来记录每个元素出现的次数,最后找出出现次数最多的那个元素。
再说说链表,链表是由一系列节点组成的,每个节点包含数据和指向下一个节点的引用。
相比于数组,链表在插入和删除操作上具有优势,时间复杂度为 O(1)。
但查找操作的时间复杂度为 O(n)。
有这样一道链表的习题:实现一个链表的反转。
这就需要我们改变链表节点的指针指向,依次将每个节点的 next 指针指向前一个节点,从而实现链表的反转。
接下来是栈,栈是一种特殊的线性表,遵循后进先出(LIFO)的原则。
在 Java 中,可以使用数组或者链表来实现栈。
比如有这样一道关于栈的习题:判断一个表达式中的括号是否匹配。
我们可以将左括号入栈,遇到右括号时弹出栈顶的左括号进行匹配,如果最后栈为空,则括号匹配成功。
然后是队列,队列遵循先进先出(FIFO)的原则。
在实际应用中,比如排队系统、任务调度等都可以用到队列。
例如,有这样一道队列的习题:实现一个循环队列。
这就需要我们处理好队列的头尾指针,以及队列满和空的判断条件。
在解决这些习题的过程中,我们不仅要熟练掌握各种数据结构的特点和操作方法,还要具备良好的逻辑思维和代码实现能力。
同时,通过不断地练习和思考,我们能够更加深入地理解数据结构的本质,为今后解决更复杂的问题打下坚实的基础。
数据结构(C语言版)习题及答案第二章

习题2.1选择题1、线性表的顺序存储结构是一种(A)的存储结构,线性表的链式存储结构是一种(B)的存储结构。
A、随机存取B、顺序存取C、索引存取D、散列存取2、对于一个线性,既要求能够进行较快的插入和删除,又要求存储结构能够反映数据元素之间的逻辑关系,则应该选择(B)。
A、顺序存储方式B、链式存储方式C、散列存储方式D、索引存储方式3、已知,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 ;4、单链表中各结点之间的地址( C D)。
A、必须连续B、部分地址必须连续C、不一定连续D、连续与否都可以5、在一个长度为n的顺序表中向第i个元素(0<i<=n+1)之前插入一个新元素时,需向后移动(B)个元素。
A、n-iB、n-i+1C、n-i-1D、i2.2填空题1、顺序存储的长度为n的线性表,在任何位置上插入和删除操作的时间复杂度基本上都一样。
插入一个元素大约移动表中的(n/2)个元素,删除一个元素时大约移动表中的((n-1)/2)个元素。
2、在线性表的顺序存储方式中,元素之间的逻辑关系是通过(物理顺序)来体现的;在链式存储方式,元素之间的逻辑关系是通过(指针)体现的。
3、对于一个长度为n的单链表,在已知的p结点后面插入一个新结点的时间复杂度为(o(1)),在p结点之前插入一个新结点的时间复杂度为(o(n)),在给定值为e的结点之后插入一个新结点的时间复杂度为(o(n))。
4、在双向链表中,每个结点包含两个指针域,一个指向(前驱)结点,另一个指向(后继)结点。
数据结构第二章 线性表练习及答案

一、选择题1、用单链表方式存储的线性表,存储每个结点需要两个域,一个是数据域,另一个是()A、当前结点所在的地址域B、指针域C、空指针域D、空闲域2、不带头结点的单链表head为空的判断条件是()A、head==NULLB、head->next==NULLC、head->data==NULLD、head!=NULL3、在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在p和q之间插入s结点,则执行()A、s->next=p; q->next=s;B、p->next=s->next; s->next=p;C、q->next=s->next; s->next=p;D、p->next=s; s->next=q;4、在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是()A、O(1)B、O(n)C、O(n2)D、O(nlog2n)5、一个单链表中,若删除p所指结点的后续结点,则执行()A、p->next=p->next->next;B、p=p->next; p->next=p->next->next;C、p->next=p;D、p=p->next->next;6、已知一个顺序存储的基本线性表,设每个结点需占m个存储单元,若第一个结点的地址为d1,则第i个结点的地址为()A、d1+(i-1)*mB、d1+i*mC、d1-i*mD、d1+(i+1)*m7、在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是()A、访问第i个结点(1<=i<=n)和求第i个结点的直接前驱(2<=i<=n)B、在第i个结点后插入一个新结点(1<=i<=n)C、删除第i个结点(1<=i<=n)D、将n个结点从小到大排序8、下面给出的算法段是要把一个q所指新结点作为非空双向链表中的p所指结点的前驱结点插入到该双向链表中,能正确完成要求的算法段是()A、q->next=p; q->prior=p->prior; p->prior=q; p->prior->next=q;B、p->prior=q; q->next=p; p->prior->next=q; q->prior=p->prior;C、q->prior=p->prior; q->next=p; p->prior->next=q; p->prior=q;D、以上都不对9、在循环双链表的p所指结点之后插入s所指结点的操作是()A、p->next=s; s->prior=p; p->next->prior=s; s->next=p->next;B、p->next=s; p->next->prior=s; s->prior=p; s->next=p->next;C、s->prior=p; s->next=p->next; p->next=s; p->next->prior=s;D、s->prior=p; p->next->prior=s; s->next=p->next; p->next=s;10、从具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较()个结点。
数据结构第二章测试(长春理工大学精品课)

数据结构测试(长春理工大学精品课)第2章线性表一、选择题1.下述( )是顺序存储结构的优点?查看答案A.存储密度大 B.插入运算方便C.删除运算方便 D.可方便地用于各种逻辑结构的存储表示正确答案为A解释:插入运算和删除运算对于顺序存储结构需要移动大量的数据元素,顺序存储结构对于非线性的逻辑结构表示比较复杂,顺序存储结构中只需要存储数据元素,不像链式结构除了存数据元素还要存储关系,因此顺序存储结构的存储密度比较大。
收起2.下面关于线性表的叙述中,错误的是哪一个?( )查看答案A.线性表采用顺序存储,必须占用一片连续的存储单元。
B.线性表采用顺序存储,便于进行插入和删除操作。
C.线性表采用链接存储,不必占用一片连续的存储单元。
D.线性表采用链接存储,便于插入和删除操作。
正确答案是B解释:顺序存储不利于插入删除,需要移动近一半的数据元素。
收起3.线性表是具有n个()的有限序列(n>0)。
查看答案A.表元素 B.字符C.数据元素 D.数据项解释:根据线性表的定义。
收起4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。
查看答案A.顺序表 B.双链表C.带头结点的双循环链表 D.单循环链表正确答案是A解释:顺序存储结构做相应的操作时间复杂度分别为O(1),O(1),O(1)因此是最节省时间的。
收起5.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。
查看答案A.单链表 B.仅有头指针的单循环链表C.双链表 D.仅有尾指针的单循环链表正确答案是D解释:在仅有尾指针的单循环链表做相应操作的时间复杂度为O(1),O(1)收起6. 若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为()(1<=i<=n+1)。
查看答案A. O(0)B. O(1)C. O(n)D. O(n2)解释:在顺序表的第i个位置插入一个元素平均需移动的元素的个数是[n+(n-1)+......+0]/(n+1)=n/2,因此算法时间复杂度为O(n)。
《数据结构》第1-2章练习题——第1-2章(带答案)

《数据结构》第1-2章练习题一、选择1、通常从正确性、易读性、健壮性、高效性等四个方面评价算法(包括程序)的质量。
以下解释错误的是( )A、正确性算法应能正确地实现预定的功能(即处理要求)B、易读性算法应易于阅读和理解以便于调试修改和扩充C、健壮性当环境发生变化时,算法能适当地做出反应或进行处理,不会产生不需要的运行结果D、高效性即达到所需要的时间性能2、以下说法正确的是 ( )A、数据元素是数据的最小单位B、数据项是数据的基本单位C、数据结构是带有结构的各数据项的集合D、数据结构是带有结构的数据元素的集合3、对于顺序表,以下说法错误的是()A、顺序表是用一维数组实现的线性表,数组的下标可以看成是元素的绝对地址B、顺序表的所有存储结点按相应数据元素间的逻辑关系决定的次序依次排列C、顺序表的特点是:逻辑结构中相邻的结点在存储结构中仍相邻D、顺序表的特点是:逻辑上相邻的元素,存储在物理位置也相邻的单元中数组的下标可以看成是元素的相对地址4、对顺序表上的插入、删除算法的时间复杂性分析来说,通常以()为标准操作A、条件判断B、结点移动C、算术表达式D、赋值语句5、对于顺序表的优缺点,以下说法错误的是()A、无需为表示结点间的逻辑关系而增加额外的存储空间B、可以方便地随机存取表中的任一结点C、插入和删除运算较方便D、容易造成一部分空间长期闲置而得不到充分利用6、链表不具有的特点是:A、可随机访问任一个元素B、插入删除不需要移动元素C、不必事先估计存储空间D、所需空间与线性表长度成正比7、若线性表最常用的操作是存取第i个元素及其前驱的值,则采用()存储方式节省时间A、单链表B、双向链表C、单循环链表D、顺序表顺序表可以随机存取8、设指针P指向双链表的某一结点,则双链表结构的对称性可用()式来刻画A、p->prior->next->==p->next->nextB、p->prior->prior->==p->next->priorC、p->prior->next->==p->next->priorD、p->next->next==p->prior->prior9、以下说错误的是()A、对循环来说,从表中任一结点出发都能通过前后操作而扫描整个循环链表B、对单链表来说,只有从头结点开始才能扫描表中全部结点C、双链表的特点是找结点的前趋和后继都很容易D、对双链表来说,结点*P的存储位置既存放在其前趋结点的后继指针域中,也存放在它的后继结点的前趋指针域中。
数据结构第2章习题参考答案

数据结构第2章习题参考答案2.7习题2.7.1知识点:线性表的逻辑结构一、选择题1①线性表l=(a1,a2,…,an),下列说法正确的是(d)。
a.每个元素都有一个直接前驱和一个直接后继。
b.线性表中至少要有一个元素。
c.表诸元素的排序顺序必须就是由小到大或由小至大。
d.除第一个和最后一个元素外,其余每个元素都有一个且仅有一个直接前驱和直接后继。
2①在线性表的下列运算中,不改变数据元素之间结构关系的运算是(d)。
a.插入b.删除c.排序d.定位3①线性表就是具备n个(c)的非常有限序列(n>0)。
【清华大学1998】a.表元素b.字符c.数据元素d.数据项e.信息项二、判断题(t)1①线性表中的每个结点最多只有一个前驱和一个后继。
(f)2①线性表中的每个结点都至少存有一个前驱结点和后继结点。
(f)3①线性表就是n个数的非常有限序列。
(f)4①同一线性表的数据元素可以具有不同的特性。
(t)5①线性表的长度n就是表数据元素的个数,当n=0时,称作空表。
(t)6①线性表就是一个相当有效率的数据结构,它的长度可以根据须要快速增长或延长。
(f)7①对线性表中的数据元素就可以展开出访,无法展开填入和删掉操作方式。
2.7.2知识点:线性表的顺序存储结构一、选择题1①在一个长度为n的顺序表中,在第i个元素(1<=i<=n+1)之前插入一个新元素时需向后移动(b)个元素.a.n-1b.n-i+1c.n-i-1d.i2①若某线性表中最常用的操作方式就是挑第i个元素和打听第i个元素的前趋元素,则使用(d)存储方式最节省时间。
a.单链表b.双链表c.单向循环d.顺序表3②一个数组第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是(b)a.110b.108c.100d.1204①下列哪一条就是顺序存储结构的优点(a)。
【北方交通大学2001】a.存储密度小b.填入运算便利c.删除运算方便d.可方便地用于各种逻辑结构的存储表示5③若长度为n的线性表使用顺序存储结构,在其第i个边线填入一个新元素的算法的时间复杂度为(c)(1<=i<=n+1)。
《数据结构》第02章在线测试

《数据结构》第02章在线测试
A
一>next
B p;
C
一>next
D
一>next
A B
C D
、采用链式结构表示一个线性表时要求占用的存储空间地址
A B
C D
、设顺序表第一个元素loc(X)为基地址
A为每个元素的大小
B
素的大小
C为每个元素的大小
D 大小
A每个节点都有指向前驱和后继的指针B
节点C D
B、检查表是否已满
C、顺序查找插入位置
D、从插入位置i到表尾所有元素后移一个位置
2、顺序表的特点有
A、存储结构简单
B、易于实现
C、节省空间
D、可随机存储
3、线性表用链式结构来实现,可有哪些形式
A、单链表
B、双链表
C、循环链表
D、双向循环链表
4、下列哪些是线性表的常用操作
A、插入
B、删除
C、查找
D、判断是否为空
5、已在内存中实现的线性表可以是
A、顺序表
B、单链表
C、双向链表
D、循环链表
第三题、判断题(每题1分,5道题共5分)
1、采用顺序存储的方法进行存储的线性表简称为顺序表
正确错误
、在线性表中插入一个元素后线性表的长度比插入前增加
正确错误
、采用链式存储结构存储的线性表简称为链表
正确错误
free(p)的作用是释放所指的节点变量空间
正确错误
、对于循环链表可以从链表中的任一节点出发,沿着循环链找到链表中所有的其他节点正确。
数据结构第二章作业及答案

解答(续):
*
解答(续): 五、解: (此处图略) (1) sprior =qprior; (2) qpriornext =s; (3) snext=q; (4) qprior=s; 六、解: (此处图略) (1) p =qprior; (2) ppriornext =q; (3) qprior =pprior; (4) free(p);
解答(续): 删除算法的主要步骤: 若i 不合法或表L空,算法结束,并返回ERROR;否则转2) 将第i个元素赋值给e; 将第i个元素之后的元素(不包括第i个元素)依次向前移动一个位置; 表长-1
解答(续): 删除操作算法(算法2.5 ): Status ListDelete_Sq(SqList &L, int i, ElemType &e) { //在顺序线性表L中删除第.i个元素,并用e返回其值 // i的合法值为 1≤i≤L.length // 表空L.length=0 则i> L.length if((i<1)||(i>L.Length))return ERROR; // i值不合法或表空 p = &(L.elem[i-1]); //p为被删除元素的位置 e = *p; // 被删除元素的值赋给e q = &(L.elem[L.length-1]); // 表尾元素的位置 for (++p; p<=q;++p) *(p-1)=*p; //被删除元素之后的元素前移 --L.length; //表长减1 return OK; } //ListDelete_Sq
*
数据结构第二章作业及答案 一 、选择题 1.下述哪一条是顺序存储结构的优点? A.存储密度大 B.插入运算方便 C.删除运算方便 D.可方便地用于各种逻辑结构的存储表示 2.下面关于线性表的叙述中,错误的是哪一个? A.线性表采用顺序存储,必须占用一片连续的存储单元。 B.线性表采用顺序存储,便于进行插入和删除操作。 C.线性表采用链接存储,不必占用一片连续的存储单元。 D.线性表采用链接存储,便于插入和删除操作。 3.线性表是具有n个( )的有限序列(n>0)。 A.表元素 B.字符 C.数据元素 D.数据项 4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( )存储方式最节省时间。 A.顺序表 B.双向链表 C.带头结点的双向循环链表 D.循环链表
数据结构作业二答案

作业二栈和队列一、填空题(每空1分,共15分)1. 栈是一种特殊的线性表,允许插入和删除运算的一端称为栈顶。
不允许插入和删除运算的一端称为栈底。
2. 队列是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。
只能在队尾插入和队首删除元素。
3. 在具有n个单元的循环队列中,队满时共有n-1个元素。
4. 向栈中压入元素的操作是先移动栈顶指针,后存入元素。
5. 从循环队列中删除一个元素时,其操作是先移动队首指针,后取出元素。
二、判断正误(判断下列概念的正确性,并作出简要的说明。
)(每小题1分,共10分)(×)1. 线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。
错,线性表是逻辑结构概念,可以顺序存储或链式存储,与元素数据类型无关。
(√)2. 栈是一种对所有插入、删除操作限于在表的一端进行的线性表,是一种后进先出型结构。
(√)3. 对于不同的使用者,一个表结构既可以是栈,也可以是队列,也可以是线性表。
正确,都是线性逻辑结构,栈和队列其实是特殊的线性表,对运算的定义略有不同而已。
(×) 4. 栈和链表是两种不同的数据结构。
错,栈是逻辑结构的概念,是特殊殊线性表,而链表是存储结构概念,二者不是同类项。
(×) 5. 栈和队列是一种非线性数据结构。
错,他们都是线性逻辑结构,栈和队列其实是特殊的线性表,对运算的定义略有不同而已。
(√)6. 栈和队列的存储方式既可是顺序方式,也可是链接方式。
(√)7. 两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈底分别设在这片内存空间的两端。
(×)8. 队是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出型结构。
错,后半句不对。
(×)9. 一个栈的输入序列是12345,则栈的输出序列不可能是12345。
错,有可能。
三、单项选择题(每小题1分,共20分)(B)1.栈中元素的进出原则是A.先进先出B.后进先出C.栈空则进D.栈满则出(C)2.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为A.i B.n=i C.n-i+1 D.不确定解释:当p1=n,即n是最先出栈的,根据栈的原理,n必定是最后入栈的(事实上题目已经表明了),那么输入顺序必定是1,2,3,…,n,则出栈的序列是n,…,3,2,1。
数据结构第二单元测验题目的参考答案

数据结构第二单元测验答案一、选择题1.由3 个结点可以构造出多少种不同的有向树( )A.2B.3C.4D.52.由3 个结点可以构造出多少种不同的二叉树( d)A.2B.3C.4D.53.二叉树的第I层上最多含有结点数为(c )A.2IB.2I-1-1C.2I-1D.2I -14.一棵二叉树高度为h,所有结点的度或为0,或为2,则这棵二叉树最少有( b )结点A.2hB.2h-1C.2h+1D.h+1除第一层外,每层最少2个结点5.一棵树高为K的完全二叉树至少有( c )个结点A.2k–1B.2k-1–1C.2k-1D.2k6.深度为6的二叉树最多有( c )个结点A.64 B.63 C.32 D.317.设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1 则T中的叶子数为( )A.5B.6C.7D.88.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是( c )A.9B.11C.15D.不确定9.一棵完全二叉树上有1001个结点,其中叶子结点的个数是( e )A.250B.500C.254D.505 E.以上答案都不对10.对于有n 个结点的二叉树, 其高度为( d )A.nlog2nB.log2nC.⎣log2n⎦|+1D.不确定11.将含有83个结点的完全二叉树从根结点开始编号,根为1号,按从上到下.从左到右顺序结点编号,那么编号为41的双亲结点编号为()A.42B.40C.21D.2012.一个二叉树按顺序方式存储在一个维数组中,如图0 1 2 3 4 5 6 7 8 9 10 11 12 13 14A B C D E F G H I J则结点E在二叉树的第(c )层。
A. 1B. 2C. 3D.413.某二叉树的先序序列和后序序列正好相反,则该二叉树一定是( b)的二叉树A.空或只有一个结点B.高度等于其结点数C.任一结点无左孩子D.任一结点无右孩子14.任何一棵二叉树的叶结点在其先根.中根.后根遍历序列中的相对位置( c )A.肯定发生变化B.有时发生变化C.肯定不发生变化D.无法确定15.二叉树线索化后,仍不能有效求解的问题是(d )A.先序线索二叉树中求先序后继B.中序线索二叉树中求中序后继C.中序线索二叉树中求中序前驱D.后序线索二叉树中求后续后继一共有两种情况:一个是先序线索中求先序前驱和后序线索求后序后继16.如果T2是由有序树T转化而来的二叉树,那么T中结点的前序就是T2中结点的( a )A.前序B.中序C.后序D.层次序17.设森林T中有4棵树,第一.二.三.四棵树的结点个数分别是n1,n2,n3,n4,那么当把森林T转换成一棵二叉树后,且根结点的右子树上有( d )个结点。
数据结构Java版第二章习题

(按照自己的情况选作部分习题,不要抄袭)第二章习题顺序存储线性表一判断题1.线性表的逻辑顺序与存储顺序总是一致的。
×2.顺序存储的线性表可以按序号随机存取.√3.顺序表的插入和删除操作不需要付出很大的时间代价,因为每次操作平均只有近一半的元素需要移动。
×4.线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此是属于同一数据对象。
√5.在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。
×6.在线性表的顺序存储结构中,插入和删除时,移动元素的个数与该元素的位置有关。
√二单选题 (请从下列A,B,C,D选项中选择一项)1.线性表是( A).(A) 一个有限序列,可以为空;(B)一个有限序列,不能为空;(C) 一个无限序列,可以为空;(D)一个无序序列,不能为空。
2.对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的.插入一个元素时平均要移动表中的(A)个元素。
(A) n/2 (B)n+1/2 (C) n -1/2 (D)n三填空题1.在顺序表中做插入操作时首先检查___表是否满了______________。
四算法设计题1.设线性表存放在向量A[arrsize]的前elenum个分量中,且递增有序。
试写一算法,将x 插入到线性表的适当位置上,以保持线性表的有序性。
并且分析算法的时间复杂度。
2.已知一顺序表A,其元素值非递减有序排列,编写一个函数删除顺序表中多余的值相同的元素.3.编写一个函数,从一给定的顺序表A中删除值在x~y(x〈=y)之间的所有元素,要求以较高的效率来实现.提示:可以先将顺序表中所有值在x~y之间的元素置成一个特殊的值,并不立即删除它们,然后从最后向前依次扫描,发现具有特殊值的元素后,移动其后面的元素将其删除掉。
4.线性表中有n个元素,每个元素是一个字符,现存于向量R[n]中,试写一算法,使R 中的字符按字母字符、数字字符和其它字符的顺序排列。
《c语言数据结构》第2章 自测卷答案

第2章自测卷答案姓名班级一、填空(每空1分,共13分)1. 【严题集2.2①】在顺序表中插入或删除一个元素,需要平均移动表中一半元素,具体移动的元素个数与表长和该元素在表中的位置有关。
2. 线性表中结点的集合是有限的,结点间的关系是一对一的。
3. 向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动n-i+1 个元素。
4. 向一个长度为n的向量中删除第i个元素(1≤i≤n)时,需向前移动n-i 个元素。
5. 在顺序表中访问任意一结点的时间复杂度均为O(1),因此,顺序表也称为随机存取的数据结构。
6. 【严题集2.2①】顺序表中逻辑上相邻的元素的物理位置必定相邻。
单链表中逻辑上相邻的元素的物理位置不一定相邻。
7. 【严题集2.2①】在单链表中,除了首元结点外,任一结点的存储位置由其直接前驱结点的链域的值指示。
8.在n个结点的单链表中要删除已知结点*p,需找到它的前驱结点的地址,其时间复杂度为O(n)。
二、判断正误(在正确的说法后面打勾,反之打叉)(每小题1分,共10分)(×)1. 链表的每个结点中都恰好包含一个指针。
答:错误。
链表中的结点可含多个指针域,分别存放多个指针。
例如,双向链表中的结点可以含有两个指针域,分别存放指向其直接前趋和直接后继结点的指针。
(×)2. 链表的物理存储结构具有同链表一样的顺序。
错,链表的存储结构特点是无序,而链表的示意图有序。
(×)3. 链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动地将后续的各个单元向前移动。
错,链表的结点不会移动,只是指针内容改变。
(×)4. 线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。
错,混淆了逻辑结构与物理结构,链表也是线性表!且即使是顺序表,也能存放记录型数据。
(×)5. 顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。
数据结构第2章作业参考答案

第二章线性表一、单项选择题1.顺序存储结构的特点是( B )。
A. 只能实现顺序存取元素的操作B. 逻辑上相邻的数据元素在存储地址上也一定相邻C. 逻辑上相邻的数据元素在存储地址上一定不相邻D. 逻辑上相邻的数据元素在存储地址上不一定相邻2.若某链表中最常用的操作是在最后一个元素之后插入一个元素和删除最后一个元素,则采用( C )最节省时间。
A. 单链表B. 双链表C. 带头结点的双循环链表D. 单循环链表3.与线性表的顺序存储不相符的特性是( A )。
A. 插入和删除操作灵活B. 需要连续存储空间C. 便于随机访问D. 存储密度大4.与线性表的链接存储不相符合的特性是( C)。
A. 便于插入、删除运算B. 存储空间动态分配C. 需要连续的存储空间D. 只能顺序查找5.链表不具有的特点是( B)。
A. 插入、删除不需要移动元素B. 可随机访问任一元素C. 不必事先估计存储空间D. 所需空间与线性长度成正比6.循环链表h的尾结点p的特点是( D )。
A.p==h->nextB. p->next== h->nextC.p==hD. p->next==h7.在一个单链表中,已知q所指向的结点是p所指向结点的前驱结点,若在q和p 之间插入s所指向的结点,则执行( C )。
A. s->next=p->next;p->next=s;B. p->next=s->next;s->next=p;C. q->next=s;s->next=p;D. p->next=s;s->next=q;8.设一个有序的顺序表中有n个结点,现要求插入一个新结点后使得顺序表仍然保持有序,则该操作的平均时间复杂度为(D )。
A. O(log2n)B. O(1)C. O(n2)D. O(n)9.对于一个线性表,若要求既能够进行较快地插入和删除,又能够反映出数据元素之间的关系,则应该( A)。
数据结构第二章线性表作业习题及答案——北理工版

第二章(线性表)作业(参见《数据结构题集》第2章部分P13)一、在什么情况下用顺序表比链表好?(题集2.3)二、单选题:1、线性表的顺序存储是通过何种方式表示元素之间的逻辑关系。
①后继元素的地址②元素的存储顺序③左右孩子地址④后继元素的数组下标2、在线性表顺序存储结构中,在第I个元素之前插入新元素一般需要。
①移动元素②修改头指针③修改指针④申请新的结点空间3、在长度为n的顺序表的第I个元素之前插入一新元素的算法的时间复杂度为。
①O(n) ②O(1)③O(n2) ④O(Log2n)三、编写顺序表的判空操作算法。
四、编写顺序表求表长操作的算法。
五、已知L是带表头结点的非空单链表,且P结点既不是首元结点,也不是尾元结点,试从下列(1) ~ (14)提供的答案中选择合适的语句序列填空。
(题集2.7)a.删除P结点的直接后继结点的语句序列是_______ __________。
b.删除P结点的直接前驱结点的语句序列是_______________ __。
c.删除P结点的语句序列是_____________________________ _ _。
d.删除首元结点的语句序列是___________________________ __。
e.删除尾元结点的语句序列是____ _________________________。
(1)p = p->next;(2)p->next = p;(3)p->next = p->next->next;(4)p = p->next->next;(5)while ( p!=NULL ) p=p->next;(6)while ( q->next!=NULL ) { p=q; q=q->next; }(7)while ( p->next!=q ) p=p->next;(8)while ( p->next->next!=q ) p=p->next;(9)while ( p->next->next!=NULL ) p=p->next;(10)q=p;(11)q=p->next;(12)p=l;(13)l=l->next;(14)free(q);六、算法设计。
PTA 第二章 线性表作业及答案 数据结构平时作业

A. 38 B. 43 C. 26 D. 29
2、完成下列填空题(每空3分,共9分)。
1.在顺序表L中第i个位置上插入一个新的元素e:
Status ListInsert_Sq(SqList &L , int i , ET e){
}
for( j=L.length ; j>=i ; --j )
___L.elem[j]=L.elem[j-1]____;
L.elem[j]=e ;
++L.length_______;
return OK;
}
2.删除双向(DuLinkList L, DuLinkList p) {
}
for (k=0,i=0;i<A.length;i++)
{
if(A.data[i]==’#’) k++;
else A.data[i-k]= A.data[i];
}
A.length= A.length-k;
}
2.(15分)已知带头结点的单循环链表L,编写算法实现删除其中所有值为e的数据元素结点。
(要求:类型定义、算法描述和算法时间复杂度分析)
return;
p = L;
while (p->next != L)
{
if (p->next->data != e)
P = p->next;
else
{ q = p->next;p->next = q->next; free(q);}
}
}
时间复杂度为O(n)。(2分)
数据结构2-3章习题

5.线性表典型的基本运算包括:初始化InitList(&L)、 线性表典型的基本运算包括:初始化 线性表典型的基本运算包括 、 求表长ListLength(L)、 访问表元素 求表长 、 访问表元素GetElem(L,I,&e)、 、 定位LocateElem(L,e,compare())、 插入 定位 、 ListInsert(&L,i,e)、 删除 等六种。 、 删除ListDelete(&L,I,&e)等六种。 等六种 6.顺序表的特点是逻辑结构中相邻的结点在存储结构中 顺序表的特点是逻辑结构中相邻的结点在存储结构中 顺序表的特点是 仍相邻 。 7.顺序表的类型定义可经编译转换为机器级。假定每个 顺序表的类型定义可经编译转换为机器级。 顺序表的类型定义可经编译转换为机器级 datatype类型的变量占用 类型的变量占用k(k>=1)个内存单元,其中, 个内存单元, 类型的变量占用 个内存单元 其中, b是顺序表的第一个存储结点的第一个单元的内存地址, 是顺序表的第一个存储结点的第一个单元的内存地址, 是顺序表的第一个存储结点的第一个单元的内存地址 那么, 个结点 的存储地址为b+(i-1)* k 。 个结点ai的存储地址为 那么,第i个结点 的存储地址为
《数据结构》第二章线性表习题及参考答案

《数据结构》第二章线性表习题一、单项选择题1. 线性表是________。
A.一个有限序列,可以为空B.一个有限序列,不可以为空C.一个无限序列,可以为空D.一个无限序列,不可以为空2. 在一个长度为n的顺序表中删除第i个元素(0<=i<=n)时,需向前移动个元素。
A.n-i B.n-i+l C.n-i-1 D.i3. 线性表采用链式存储时,其地址________。
A.必须是连续的B.一定是不连续的C.部分地址必须是连续的D.连续与否均可以4. 从一个具有n个结点的单链表中查找其值等于x的结点时,在查找成功的情况下,需平均比较________个元素结点。
A.n/2 B.n C.(n+1)/2 D.(n-1)/25. 在双向循环链表中,在p所指的结点之后插入s指针所指的结点,其操作是____。
A. p->next=s; s->prior=p;p->next->prior=s; s->next=p->next;B. s->prior=p; s->next=p->next;p->next=s; p->next->prior=s;C. p->next=s; p->next->prior=s;s->prior=p; s->next=p->next;D. s->prior=p; s->next=p->next;p->next->prior=s; p->next=s;6. 设单链表中指针p指向结点m,若要删除m之后的结点(若存在),则需修改指针的操作为________。
A.p->next=p->next->next; B.p=p->next; C.p=p->next->next; D.p->next=p;7. 在一个长度为n的顺序表中向第i个元素(0< i<n+l )之前插入一个新元素时,需向后移动______个元素。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、填空(每空1分,共13分)
1. 在顺序表中插入或删除一个元素,需要平均移动元素,具体移动的元素个数
与有关。
2. 线性表中结点的集合是的,结点间的关系是的。
3. 向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动个元素。
4. 向一个长度为n的向量中删除第i个元素(1≤i≤n)时,需向前移动个元素。
5. 在顺序表中访问任意一结点的时间复杂度均为,因此,顺序表也称为的数据结构。
6. 顺序表中逻辑上相邻的元素的物理位置相邻。
单链表中逻辑上相邻的元素的物理位置相邻。
7. 在单链表中,除了首元结点外,任一结点的存储位置由指示。
8.在n个结点的单链表中要删除已知结点*p,需找到它的,其时间复杂度为。
二、判断正误(在正确的说法后面打勾,反之打叉)(每小题1分,共10分)
()1. 链表的每个结点中都恰好包含一个指针。
()2. 链表的物理存储结构具有同链表一样的顺序。
()3. 链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动将后续各个单元向前移动。
()4. 线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。
()5. 顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。
()6. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。
()7. 线性表在物理存储空间中也一定是连续的。
()8. 线性表在顺序存储时,逻辑上相邻的元素未必在存储的物理位置次序上相邻。
()9. 顺序存储方式只能用于存储线性结构。
()10. 线性表的逻辑顺序与存储顺序总是一致的。
三、单项选择题(每小题1分,共7分)
()1.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为:(A)存储结构(B)逻辑结构(C)顺序存储结构(D)链式存储结构
()2. 一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是(A)110 (B)108 (C)100 (D)120
()3. 在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是:
(A)访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)
(B)在第i个结点后插入一个新结点(1≤i≤n)
(C)删除第i个结点(1≤i≤n)(D)将n个结点从小到大排序
()4. 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动个元素(A)8 (B)63.5 (C)63 (D)7
()5. 链接存储的存储结构所占存储空间:
(A)分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针
(B)只有一部分,存放结点值
(C)只有一部分,存储表示结点间关系的指针
(D)分两部分,一部分存放结点值,另一部分存放结点所占单元数
()6. 链表是一种采用存储结构存储的线性表;
(A)顺序(B)链式(C)星式(D)网状
()7. 线性表若采用链式存储结构时,要求内存中可用存储单元的地址:
(A)必须是连续的(B)部分地址必须是连续的
(C)一定是不连续的(D)连续或不连续都可以
()8.线性表L在情况下适用于使用链式结构实现。
(A)需经常修改L中的结点值(B)需不断对L进行删除插入
(C)L中含有大量的结点(D)L中结点结构复杂
()9.单链表的存储密度
(A)大于1;(B)等于1;(C)小于1;(D)不能确定
()10.设a1、a2、a3为3个结点,整数P0,3,4代表地址,则如下的链式存储结构称为
P0 3 4
P0→→→
(A)循环链表(B)单链表(C)双向循环链表(D)双向链表
四、简答题(每小题5分,共10分)
1. 试比较顺序存储结构和链式存储结构的优缺点。
在什么情况下用顺序表比链表好?
2 . 描述以下三个概念的区别:头指针、头结点、首元结点(第一个元素结点)。
在单链表中设置头结点的作用是什么?
五、(7分)线性表具有两种存储方式,即顺序方式和链接方式。
现有一个具有五个元素的线性表L={23,17,47,05,31},若它以链接方式存储在下列100~119号地址空间中,每个结点由数据(占2个字节)和指针(占2
^
100 120
其中指针X,Y,Z的值分别为多少?该线性表的首结点起始地址为多少?末结点的起始地址为多少?
六、阅读分析题(10分)
指出以下算法中的错误和低效(即费时)之处,并将它改写为一个既正确又高效的算法。
七、编程题(每题10分,共40分)
1. 写出在顺序存储结构下将线性表逆转的算法,要求使用最少的附加空间。
2. 已知L是无表头结点的单链表,且P结点既不是首元结点,也不是尾元结点,请写出在P结点后插入S结点的核心语句序列。
3. 编写程序,将若干整数从键盘输入,以单链表形式存储起来,然后计算单链表中结点的个数(其中指针P指向该链表的第一个结点)。
4. 请编写26个字母按特定字母值插入或删除的完整程序,可自行选用顺序存储或链表结构。