数据结构第二章试题

合集下载

数据结构练习题第二章答案

数据结构练习题第二章答案

数据结构练习题第二章答案一、选择题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章习题

数据结构第2章习题

一、填空1. 在顺序表中插入或删除一个元素,需要平均移动元素,具体移动的元素个数与有关。

2. 线性表中结点的集合是的,结点间的关系是的。

3. 向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动个元素。

4. 向一个长度为n的向量中删除第i个元素(1≤i≤n)时,需向前移动个元素。

5. 在顺序表中访问任意一结点的时间复杂度均为,因此,顺序表也称为的数据结构。

6. 顺序表中逻辑上相邻的元素的物理位置相邻。

单链表中逻辑上相邻的元素的物理位置相邻。

7. 在单链表中,除了首元结点外,任一结点的存储位置由指示。

8.在n个结点的单链表中要删除已知结点*p,需找到它的,其时间复杂度为。

二、判断正误(在正确的说法后面打勾,反之打叉)()1. 链表的每个结点中都恰好包含一个指针。

()2.链表的物理存储结构具有同链表一样的顺序。

()3.链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动将后续各个单元向前移动。

()4.线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。

()5. 顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。

()6. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。

()7. 线性表在物理存储空间中也一定是连续的。

()8. 线性表在顺序存储时,逻辑上相邻的元素未必在存储的物理位置次序上相邻。

()9. 顺序存储方式只能用于存储线性结构。

()10. 线性表的逻辑顺序与存储顺序总是一致的。

三、单项选择题()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在情况下适用于使用链式结构实现。

数据结构--第二章考试题库(含答案)

数据结构--第二章考试题库(含答案)

第2章线性表一选择题1.下述哪一条是顺序存储结构的优点?()【北方交通大学 2001 一、4(2分)】A.存储密度大 B.插入运算方便 C.删除运算方便 D.可方便地用于各种逻辑结构的存储表示2.下面关于线性表的叙述中,错误的是哪一个?()【北方交通大学 2001 一、14(2分)】A.线性表采用顺序存储,必须占用一片连续的存储单元。

B.线性表采用顺序存储,便于进行插入和删除操作。

C.线性表采用链接存储,不必占用一片连续的存储单元。

D.线性表采用链接存储,便于插入和删除操作。

3.线性表是具有n个()的有限序列(n>0)。

【清华大学 1998 一、4(2分)】A.表元素 B.字符 C.数据元素 D.数据项 E.信息项4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。

【哈尔滨工业大学 2001二、1(2分)】A.顺序表 B.双链表 C.带头结点的双循环链表 D.单循环链表5.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。

【南开大学 2000 一、3】A.单链表 B.仅有头指针的单循环链表 C.双链表 D.仅有尾指针的单循环链表6.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( )最节省时间。

A. 单链表B.单循环链表C. 带尾指针的单循环链表D.带头结点的双循环链表【合肥工业大学 2000 一、1(2分)】7.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。

则采用()存储方式最节省运算时间。

【北京理工大学 2000一、1(2分)】A.单链表 B.双链表 C.单循环链表 D.带头结点的双循环链表8. 静态链表中指针表示的是(). 【北京理工大学 2001 六、2(2分)】A.内存地址 B.数组下标 C.下一元素地址 D.左、右孩子地址9. 链表不具有的特点是()【福州大学 1998 一、8 (2分)】A.插入、删除不需要移动元素 B.可随机访问任一元素C.不必事先估计存储空间 D.所需空间与线性长度成正比10. 下面的叙述不正确的是()【南京理工大学 1996 一、10(2分)】A.线性表在链式存储时,查找第i个元素的时间同i的值成正比B. 线性表在链式存储时,查找第i个元素的时间同i的值无关C. 线性表在顺序存储时,查找第i个元素的时间同i 的值成正比D. 线性表在顺序存储时,查找第i个元素的时间同i的值无关11. 线性表的表元存储方式有((1))和链接两种。

数据结构第2章-习题

数据结构第2章-习题

一、填空题01、当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用存储结构。

02、线性表L=(a1,a2,…,an)用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要移动元素的个数是。

03、在有n个元素的顺序表中插入一个新元素,需要平均移动元素,具体移动的元素个数与和有关。

04、线性表中结点的集合是的,结点间的关系是的。

05、向一个长度为n的顺序表的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动个元素。

06、向一个长度为n的顺序表中删除第i个元素(1≤i≤n)时,需向前移动个元素。

07、在顺序表中访问任意一结点的时间复杂度均为,因此,顺序表也称为的数据结构。

08、顺序表中逻辑上相邻的元素的物理位置相邻。

单链表中逻辑上相邻的元素的物理位置相邻。

09、在单链表中,除了首结点外,任一结点的存储位置由指示。

10、在n个结点的单链表中要删除已知结点*p,需找到它的,其时间复杂度为。

11、设单链表的结点结构为(data,next),next 为指针域,已知指针px指向单链表中data域为x的结点,指针py 指向data域为y的新结点,若将结点y插入结点x之后,则需要执行以下语句:12、在单链表中设置头结点的作用是。

13、对于一个具有n 个结点的单链表,在已知的结点*p后插入一个新结点的时间复杂度为,在给定值为x 的结点后插入一个新结点的时间复杂度为。

14、在双向循环链表中,向p所指的结点之后插入指针f所指的结点,其操作是:15、在双向链表结构中,若要求在p指针所指的结点之前插入指针为s所指的结点,则需执行下列语句:s->next=p; s->prior= ; p->prior=s; =s;16、链接存储的特点是利用来表示数据元素之间的逻辑关系。

17、对于双向链表,在两个结点之间插入一个新结点需修改的指针共个,单链表为个。

数据结构习题及答案 (2)

数据结构习题及答案 (2)

第二章线性表一、选择题1.一个线性表第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是( )(A)110 (B)108(C)100 (D)120参考答案:B2. 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动()个元素。

(A)64(B)63 (C)63.5 (D)7参考答案:C3.线性表采用链式存储结构时,其地址()。

(A) 必须是连续的 (B) 部分地址必须是连续的(C) 一定是不连续的 (D) 连续与否均可以参考答案:D4. 在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行()(A)s->next=p;p->next=s; (B) s->next=p->next;p->next=s;(C)s->next=p->next;p=s; (D)p->next=s;s->next=p;参考答案:B5.在一个单链表中,若删除p所指结点的后续结点,则执行()(A)p->next=p->next->next; (B)p=p->next; p->next=p->next->next;(C)p->next=p->next; (D)p =p->next->next;参考答案:A6.下列有关线性表的叙述中,正确的是()(A)线性表中的元素之间隔是线性关系(B)线性表中至少有一个元素(C)线性表中任何一个元素有且仅有一个直接前趋(D)线性表中任何一个元素有且仅有一个直接后继参考答案:A7.线性表是具有n个()的有限序列(n≠0)(A)表元素(B)字符(C)数据元素(D)数据项参考答案:C二、判断题1.线性表的链接存储,表中元素的逻辑顺序与物理顺序一定相同。

()2.如果没有提供指针类型的语言,就无法构造链式结构。

()3.线性结构的特点是只有一个结点没有前驱,只有一个结点没有后继,其余的结点只有一个前驱和后继。

数据结构(C语言版)习题及答案第二章

数据结构(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章习题参考答案

数据结构第2章习题参考答案

数据结构第2章习题参考答案1. 简答题1.1 什么是数据结构?数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,它包括数据的逻辑结构和物理结构。

1.2 数据结构的分类有哪些?数据结构可以分为线性结构和非线性结构。

线性结构包括线性表、栈、队列和串;非线性结构包括树和图。

1.3 数据结构的逻辑结构有哪些?数据结构的逻辑结构包括线性结构、树形结构和图形结构。

1.4 数据结构的物理结构有哪些?数据结构的物理结构包括顺序存储结构和链式存储结构。

1.5 什么是算法?算法是指求解问题的具体步骤和方法。

1.6 算法的特性有哪些?算法应具有有穷性、确定性、可行性和输入输出性。

2. 选择题2.1 在栈的顺序存储结构中,栈的存储位置是:A. 自顶向下递增B. 自底向上递增C. 自底向上递减D. 自顶向下递减答案:D2.2 下列哪个数据结构不适合表示有父子关系的数据?A. 二叉树B. 图C. 链表D. 堆答案:D2.3 对于一棵完全二叉树,叶子节点的个数为n,则树中节点的总数为:A. 2nB. 2n + 1C. nD. n + 1答案:A2.4 假设有一个长度为10的栈,初始时栈为空,若对该栈连续执行5次入栈操作,然后执行4次出栈操作,最后执行1次入栈操作,则栈中剩余的元素个数为:A. 0B. 1C. 4D. 6答案:D3. 编程题3.1 实现一个栈数据结构的基本操作,包括入栈、出栈、获取栈顶元素和判断栈是否为空。

```Pythonclass Stack:def __init__(self):self.items = []def is_empty(self):return len(self.items) == 0def push(self, item):self.items.append(item)def pop(self):if self.is_empty():return Nonereturn self.items.pop()def peek(self):if self.is_empty():return Nonereturn self.items[-1]```3.2 实现一个队列数据结构的基本操作,包括入队、出队、获取队首元素和判断队列是否为空。

数据结构 课后习题 第2章

数据结构 课后习题 第2章

一、名词解释1.线性表2.顺序表3.单链表4.循环单链表5.循环双向链表二、选择题1.用单链表方式存储的线性表,存储每个结点需要两个域,一个是数据域,另一个是_________A.当前结点的所在地址B.后继结点的所在地址C.空指针域D.空闲域2.不带头结点的单链表head为空的判定条件是__________A.head==NULLB.head→next==NULLC.head→next==headD.head!=NULL3.带头结点的单链表head为空的判定条件是__________A.head==NULLB.head→next==NULLC.head→next==headD.head!=NULL4.一个顺序表的第一个元素的存储地址是100,每个元素的长度为5,则第7个元素的地址是____________A. 130B. 125C. 120D. 1355.非空的循环单链表head的尾结点(由p所指向)满足____________A.p→next==NULLB.p==NULLC.p→next==headD.p==head6.设线性链表中结点的结构为(data, next),已知指针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;7.设线性链表中结点的结构为(data, next),已知指针p所指结点不是尾结点,若在p之后插入结点s,则应执行_____操作A.s→next=p; p→next=s;B.s→next=p→next; p→next=s;C.s→next=p→next; p=s;D.p→next=s; s→next=p;8.设线性链表中结点的结构为(data, next),若想删除结点p的直接后继,则应执行______A.p→next=p→next→next;B.p=p→next; p→next= p→next→nextC.p→next=p→next;D.p=p→next→next;9.p指向线性链表中L的某一个结点,则在线性链表的表尾插入结点s的语句序列是_________A.while(p→next != NULL) p=p→next; p→next=s; s→next=NULL;B.while(p != NULL) p=p—next; p→next=s; s→next=NULL;C.while(p→next != NULL) p=p→next; s→next=p; p→next=NULL;D.while(p!=NULL) p=p→next→next; p→next=s; s→next=p→next;三、填空题1.按顺序存储方法存储的线性表称为________,按链式存储方法存储的线性表称为________。

数据结构第二章作业及答案

数据结构第二章作业及答案

解答(续):
*
解答(续): 五、解: (此处图略) (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.循环链表

数据结构第2章习题参考答案

数据结构第2章习题参考答案

2.7 习题2.7.1 知识点:线性表的逻辑结构一、选择题1①线性表L= (a1, a2,…)n,下列说法正确的是(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 v=n+D 之前插入一个新元素时需向后移动(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) 。

(完整版)数据结构课后习题及解析第二章

(完整版)数据结构课后习题及解析第二章

第二章习题1.描述以下三个概念的区别:头指针,头结点,首元素结点。

2.填空:(1)在顺序表中插入或删除一个元素,需要平均移动元素,具体移动的元素个数与有关。

(2)在顺序表中,逻辑上相邻的元素,其物理位置相邻。

在单链表中,逻辑上相邻的元素,其物理位置相邻。

(3)在带头结点的非空单链表中,头结点的存储位置由指示,首元素结点的存储位置由指示,除首元素结点外,其它任一元素结点的存储位置由指示。

3.已知L是无表头结点的单链表,且P结点既不是首元素结点,也不是尾元素结点。

按要求从下列语句中选择合适的语句序列。

a. 在P结点后插入S结点的语句序列是:。

b. 在P结点前插入S结点的语句序列是:。

c. 在表首插入S结点的语句序列是:。

d. 在表尾插入S结点的语句序列是:。

供选择的语句有:(1)P->next=S;(2)P->next= P->next->next;(3)P->next= S->next;(4)S->next= P->next;(5)S->next= L;(6)S->next= NULL;(7)Q= P;(8)while(P->next!=Q) P=P->next;(9)while(P->next!=NULL) P=P->next;(10)P= Q;(11)P= L;(12)L= S;(13)L= P;4.设线性表存于a(1:arrsize)的前elenum个分量中且递增有序。

试写一算法,将X插入到线性表的适当位置上,以保持线性表的有序性。

5.写一算法,从顺序表中删除自第i个元素开始的k个元素。

6.已知线性表中的元素(整数)以值递增有序排列,并以单链表作存储结构。

试写一高效算法,删除表中所有大于mink且小于maxk的元素(若表中存在这样的元素),分析你的算法的时间复杂度(注意:mink和maxk是给定的两个参变量,它们的值为任意的整数)。

数据结构第二章试题

数据结构第二章试题

第2章线性表一、选择题1.链表不具备的特点是()。

A.可随机访问任意结点B.插入删除不需要移动元素C.不必事先估计存储空间D.所需空间与其长度成正比2.不带头结点的单链表head为空的判定条件是()。

==NULLB. head->next==NULL >next==head!=NULL3.带头结点的单链表head为空的判定条件是()。

==NULLB. head->next==NULL >next==head!=NULL4.带头结点的双循环链表L为空表的条件是()。

A.L==NULL B.L->next->==NULL C.L->prior==NULL >next==L5.非空的循环链表head的尾结点(由P所指向)满足()。

A.p->next==NULL B.p==NULL C.p->next==head ==head6.在循环双链表的p所指结点之前插入s所指结点的操作是()。

A.p->prior=s;s->next=p;p->prior->next=s;s->prior=p->prior;B.p->prior=s;p->prior->next=s;s->next=p;s->prior=p->prior;C.s->next=p;s->prior=p->prior;p->prior=s;p->right->next=s;D. s->next=p;s->prior=p->prior;p->prior->next=s;p->prior=s;7.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用()存储方式最节省运算时间。

A.单链表B.给出表头指针的单循环链表C.双链表D.带头结点的双循环链表8.某线性表最常用的操作是在最后一个结点之后插入一个节点或删除第一个结点,故采用()存储方式最节省运算时间。

目前最完整的数据结构1800题包括完整答案-第二章-线性表答案

目前最完整的数据结构1800题包括完整答案-第二章-线性表答案

第2章线性表部分答案解释如下。

1、头结点并不“仅起”标识作用,并且使操作统一。

另外,头结点数据域可写入链表长度,或作监视哨。

4.两种存储结构各有优缺点,应根据实际情况选用,不能笼统说哪一个好。

7.集合中元素无逻辑关系。

9.非空线性表第一个元素无前驱,最后一个元素无后继。

13.线性表是逻辑结构,可以顺序存储,也可链式存储。

三.填空题1.顺序 2.(n-1)/2 3.py->next=px->next; px->next=py4 .n-i+15.主要是使插入和删除等操作统一,在第一个元素之前插入元素和删除第一个结点不必另作判断。

另外,不论链表是否为空,链表指针不变。

6.O(1),O(n) 7.单链表,多重链表,(动态)链表,静态链表8.f->next=p->next; f->prior=p; p->next->prior=f; p->next=f;9.p^.prior s^.prior^.next10.指针 11.物理上相邻指针 12.4 213.从任一结点出发都可访问到链表中每一个元素。

14.u=p->next; p->next=u->next; free(u); 15.L->next->next==L 16.p->next!=null17.L->next==L && L->prior==L 18.s->next=p->next;p->next=s; 19.(1) IF pa=NIL THEN return(true);(2) pb<>NIL AND pa^.data>=pb^.data(3) return(inclusion(pa,pb));(4) pb:=pb^.next;(5) return(false);非递归算法:(1)pre:=pb; (2) pa<>NIL AND pb<>NIL AND pb^.data>=pa^.data (3)pa:=pa^.next; pb:=pb->next;(4)pb:=pre^.next;pre:=pb;pa:=pa^.next;(5)IF pa=NIL THEN return(true) ELSE return(false);[注]:本题是在链表上求模式匹配问题。

(完整word版)数据结构练习题第二章线性表习题及答案

(完整word版)数据结构练习题第二章线性表习题及答案

第二章线性表一.名词解释1.线性结构2。

数据结构的顺序实现 3.顺序表4。

链表5。

数据结构的链接实现6。

建表7.字符串8.串9.顺序串10。

链串二、填空题1。

为了便于讨论,有时将含n(n>=0)个结点的线性结构表示成(a1,a2,……a n),其中每个a i代表一个______。

a1称为______结点,a n称为______结点,i称为a i在线性表中的________或______。

对任意一对相邻结点a i、a i┼1(1<=i<n),a i称为a i┼1的直接______a i┼1称为a i的直接______。

2.为了满足运算的封闭性,通常允许一种逻辑结构出现不含任何结点的情况.不含任何结点的线性结构记为______或______。

3.线性结构的基本特征是:若至少含有一个结点,则除起始结点没有直接______外,其他结点有且仅有一个直接______;除终端结点没有直接______外,其它结点有且仅有一个直接______。

4.所有结点按1对1的邻接关系构成的整体就是______结构.5.线性表的逻辑结构是______结构。

其所含结点的个数称为线性表的______,简称______。

6.表长为O的线性表称为______7.线性表典型的基本运算包括:______、______、______、______、______、______等六种。

8.顺序表的特点是______.9.顺序表的类型定义可经编译转换为机器级。

假定每个datatype类型的变量占用k(k〉=1)个内存单元,其中,b是顺序表的第一个存储结点的第一个单元的内存地址,那么,第i个结点a i的存储地址为______。

10.以下为顺序表的插入运算,分析算法,请在______处填上正确的语句.Void insert_sqlist(sqlist L,datatype x,int i)/*将X插入到顺序表L的第i—1个位置*/{ if(st == maxsize) error(“表满");if((i〈1)||(i〉st+1))error(“非法位置");for(j=st;j〉=i;j—-)______;L.data[i—1]=x;L。

数据结构第二章参考答案

数据结构第二章参考答案

数据结构第二章参考答案习题21. 填空题〔1〕在一个单链表中,每个结点包含data和next两个域,q所指结点是p 所指结点的直接前驱,假设在q和p之间插入s所指结点,那么执行〔___________〕和〔___________〕操作。

答案:q->next = s; s->next = p; 或 s->next=q->next; q->next = s; 〔2〕表长为n的顺序表,当在任何位置上插入或删除一个元素的概率相等时,插入一个元素所需移动元素的平均个数为〔___________〕,删除一个元素需要移动元素的平均个数为〔___________〕。

答案:n/2 (n-1)/2〔3〕表长为0的线性表称为〔___________〕。

答案:空表〔4〕动态内存管理是操作系统的根本功能之一,其作用是响应用户程序对内存的〔___________〕和〔___________〕请求。

答案:申请释放〔5〕顺序表多采用〔___________〕实现的,是一种随机存取结构,对表中任意结点存取操作的时间复杂度为〔___________〕。

而查找链表中的结节,需要从头指针起顺着链扫描才能得到,平均时间复杂度为〔___________〕。

因此,假设线性表的操作主要是进行查找,很少进行插入或删除操作时,采用〔___________〕表比拟适宜。

答案:数组 O(1) O(n) 顺序〔6〕在链表某个位置上进行插入和删除操作,只需要修改〔___________〕即可,而无须移动大量元素,操作的时间复杂度为〔___________〕。

而在顺序表中进行插入和删除操作,往往要移动大量元素,平均移动元素的数目为〔___________〕,平均时间复杂度为〔___________〕。

因此,假设对线性表进行频繁的插入和删除操作时,采用〔___________〕表相对适宜。

假设插入和删除主要发生在表头和表尾,那么采用〔___________〕表更为适宜。

数据结构第二章习题

数据结构第二章习题

数据结构第二章习题第2章线性表一、单项选择题1.线性表就是具备n个_________的非常有限序列。

a.表元素b.字符c.数据元素d.数据项2.线性表是_________。

a.一个非常有限序列,可以为空b.一个非常有限序列,不可以为空c.一个无穷序列,可以为空d.一个无穷序列,不可以为空3.线性表使用链表存储时,其地址_________。

a.必须是连续的b.一定是不连续的c.部分地址必须是连续的d.连续与否均可以4.链表不具备的特点是_________。

a.可以随机出访任一结点b.填入删掉不须要移动元素c.不必事先估算存储空间d.所须要空间与其长度成正比5.设立线性表存有n个元素,以下操作方式中,_________在顺序单上同时实现比在链表上同时实现效率更高。

a.输出第i(1≤i≤n)个元素值b.互换第1个元素与第2个元素的值c.顺序输入这n个元素的值d.输出与给定值x相等的元素在线性表中的序号6.设立线性表中存有2n个元素,以下操作方式中,_________在单链单上同时实现Obrero在顺序单上同时实现效率更高。

a.删掉选定的元素b.在最后一个元素的后面插入一个新元素c.顺序输出前k个元素d.互换第i个元素和第2n-i-1个元素的值(i=0,1…,n-1)7.如果最常用的操作是取第i个结点及其前驱,则采用_________存储方式最节省时间。

a.单链表中b.双链表中c.单循环链表d.顺序表8.与单链表相比,双链表的优点之一是_________。

a.填入和删掉操作方式更直观b.可以展开随机出访c.可以省略字段指针或表尾指针d.出访前后相连结点更有效率9.率先垂范结点的单链表中l为觑的认定条件就是_________。

a.l==nullb.l->next==nullc.l->next==ld.l!=null10.在一个具备n个结点的有序单链表填入一个崭新结点并仍然维持有序的时间复杂度就是_________。

数据结构第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-1 B.n-i+1 C.n-i-1 D.i2①若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用(D )存储方式最节省时间。

A.单链表B.双链表C.单向循环D.顺序表3②一个数组第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是(B )A.110 B.108 C.100 D.1204①下述哪一条是顺序存储结构的优点( A )。

【北方交通大学2001】A.存储密度大B.插入运算方便C.删除运算方便D.可方便地用于各种逻辑结构的存储表示5③若长度为n 的线性表采用顺序存储结构,在其第i 个位置插入一个新元素的算法的时间复杂度为(C )(1<=i<=n+1)。

《数据结构》第二章线性表习题及参考答案

《数据结构》第二章线性表习题及参考答案

《数据结构》第二章线性表习题一、单项选择题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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第2章线性表
一、选择题
1. 链表不具备的特点是()。

A.可随机访问任意结点 B. 插入删除不需要移动元素
C. 不必事先估计存储空间
D. 所需空间与其长度成正比
2. 不带头结点的单链表head为空的判定条件是()。

==NULL B. head->next==NULL >next==head !=NULL
3.带头结点的单链表head为空的判定条件是()。

==NULL B. head->next==NULL >next==head !=NULL
4.带头结点的双循环链表L为空表的条件是()。

A.L==NULL B.L->next->==NULL C.L->prior==NULL >next==L
5.非空的循环链表head的尾结点(由P所指向)满足()。

A.p->next==NULL B.p==NULL C.p->next==head ==head
6.在循环双链表的p所指结点之前插入s所指结点的操作是()。

A.p->prior=s;s->next=p;p->prior->next=s;s->prior=p->prior;
B.p->prior=s;p->prior->next=s;s->next=p;s->prior=p->prior;
C.s->next=p;s->prior=p->prior;p->prior=s;p->right->next=s;
D. s->next=p;s->prior=p->prior;p->prior->next=s;p->prior=s;
7.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用()存储方式最节省运算时间。

A.单链表 B.给出表头指针的单循环链表
C.双链表 D. 带头结点的双循环链表
8.某线性表最常用的操作是在最后一个结点之后插入一个节点或删除第一个结点,故采用()存储方式最节省运算时间。

A.单链表 B.仅有头结点的单循环链表
C.双链表 D. 仅有尾指针的单循环链表
9.需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是()。

A.单链表 B.静态链表 C.线性链表 D. 顺序存储结构
10.如果最常用的操作是取第i个结点及前驱,则采用()存储方式最节省时间。

A.单链表 B.双链表 C.单循环链表 D.顺序表
11.在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是()。

A.O(1) B.O(n) C.O(n*n) D. O(nlog2n)
12.在一个长度为n(n>1)的单链表上,设有头和尾两个指针,执行()操作与链表的长度有关。

A.删除单链表中的第一个元素 B.删除单链表中的最后一个元素
C. 在单链表第一个元素前插入一个新元素
D.在单链表最后一个元素后插入一个新元素
13.设线性表有n个元素,以下算法中,()在顺序表上实现比在链表上实现效率更高。

A.输出第i(0<=i<=n-1)个元素值 B.交换第0个元素与第1个元素的值
C. 顺序输出这n个元素的值
D.输出与给定值x相等的元素在线性表中的序号
14.设线性表有2n个元素,算法(),在单链表上实现比在顺序表上实现效率更高。

A.删除所有值为x的元素 B.在最后一个元素的后面插入一个新元素
C. 顺序输出前k个元素
D.交换第i个元素和第2n-i-1个元素的值(i=0,1,…,n-1)
15.与单链表相比,双链表的优点之一是()。

A.插入、删除操作更简单 B.可以进行随机访问
C. 可以省略表头指针或表尾指针
D.顺序访问相临结点更灵活
16.如果对线性表的运算只有4种,即删除第一个元素,删除最后一个元素,在第一个元素
前面插入新元素,在最后一个元素的后面插入新元素,则最好使用().
A.只有表尾指针没有表头指针的循环单链表
B.只有表尾指针没有表头指针的非循环双链表
C.只有表头指针没有表尾指针的循环双链表
D.既有表头指针也有表尾指针的循环单链表
17.如果对线性表的运算只有两种,即删除第一个元素,在最后一个元素的后面插入新元素,
则最好使用()。

A.只有表头指针没有表尾指针的循环单链表 B.非循环双链表
C. 只有表尾指针没有表头指针的循环单链表
D. 循环双链表
18.设两个长度为n的单链表,结点类型相同。

若以h1为表头指针的链表是非循环的,以
h2为表头指针的链表是循环的,则()。

A.对于两个链表来说,删除第一个结点的操作,其时间复杂度都是O(1)
B.对于两个链表来说,删除最后一个结点的操作,其时间复杂度都是O(n)
C.循环链表要比非循环链表占用更多的内存空间
和h2是不同类型的变量
19.在长度为n的()上,删除第一个结点,其算法的时间复杂度为O(n)。

A.只有表头指针的不带表头结点的循环单链表
B.只有表尾指针的不带表头结点的循环单链表
C. 只有表尾指针的带表头结点的循环单链表
D. 只有表头指针的带表头结点的循环单链表
二、填空题
1.向一个长度为n的顺序表中的第i个元素(0<=i<=n-1)之前插入一个元素时,需向后移动
____个元素。

2.在一个长度为n的顺序表中删除第i个元素(0<=i<=n-1)时,需向前移动____个元素。

3.在单链表中设置头结点的作用____。

4.在单链表中,要删除某一指定的结点,必须找到该结点的____结点。

5.访问单链表中的结点,必须沿着____依次进行。

6.在双链表中,每个结点有两个指针域,一个指向____,另一个指向____。

7.在____链表上,删除最后一个结点其算法的时间复杂度为O(1)。

8.在非循环的____链表中,可以用表尾指针代替表头指针。

9.在一个单链表中的p所指结点之前插入一个s所指结点时,可执行如下操作:
(1)s->next=____;
(2)p->next=s;
(3)t=p->data;
(4)p->data=____;
(5)s->data=____;
10.在一个单链表中删除p所指结点时,应执行以下操作:
Q=p->next;
p->data=p->next->data;
p->next=____;
free(q);
11.在一个单链表中p所指结点之后插入一个s所指结点时,应执行s->next=____和p->next____的操作。

12.对于一个具有n个结点的单链表,在*p结点后插入一个新结点的时间复杂度是____;在给定值为x的结点后插入一个新结点的时间复杂度是____。

三、简答题
1.简述顺序表和链表存储方式的特点。

2.若频繁地对一个线性表进行插入和删除操作,则该线性表宜采用何种存储结构,为什么
3.对链表设置头结点的作用是什么
4.在单链表、双链表和单循环链表中,若仅知道指针p指向某结点,不知道头结点指针,能否将结点*p从相应的链表中删去若可以,其时间复杂度各为多少
5.下列说法哪些是错误的
(1)静态链表既有顺序存储的优点,又有动态链表的优点。

所以,它存取表中第i个元素的时间与i无关。

(2)静态链表中能容纳的元素个数的最大数在定义时就确定了,以后不能增加。

(3)静态链表与动态链表在元素的插入、删除上类似,不需要元素的移动。

四、算法设计题
1.已知一个顺序表L,其中的元素按值非递减有序排列,设计一个算法插入一个元素x后保持该顺序表仍按递减有序排列。

要求算法的空间复杂度为O(1)。

2.设计一个算法从顺序表L中删除所有值为x的元素。

要求算法的空间复杂度为O(1)。

3.设计一个算法从一给定的顺序表L中删除元素值在x到y(x<=y)之间的所有元素,要求以较高的效率来实现。

要求算法的空间复杂度为O(1)。

相关文档
最新文档