数据结构第二单元练习题答案

合集下载

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

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

数据结构练习题第二章答案一、选择题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.一个线性表第一个元素的存储地址是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.线性结构的特点是只有一个结点没有前驱,只有一个结点没有后继,其余的结点只有一个前驱和后继。

数据结构第二章参考答案

数据结构第二章参考答案

数据结构第二章参考答案1. 线性表线性表是数据结构中最基本的一种结构,在实际应用中广泛使用。

它是一个有序的数据元素序列,其中每个元素都有唯一的前驱和后继,除了第一个元素没有前驱,最后一个元素没有后继。

2. 顺序存储结构顺序存储结构是线性表最简单的一种实现方式。

它利用一段连续的存储空间依次存储线性表的元素,存储位置是连续的。

在顺序存储结构中,插入和删除操作需要移动大量元素,因此效率较低。

3. 链式存储结构链式存储结构通过指针将线性表的各个元素链接起来。

每个元素都包含一个数据域和一个指针域,数据域用于存储数据元素,指针域用于存储下一个元素的地址。

在链式存储结构中,插入和删除操作只需要修改指针,效率较高。

4. 栈栈是一种特殊的线性表,它只允许在表的一端进行插入和删除操作,这一端称为栈顶。

栈的特点是后进先出,即最后插入的元素最先被删除。

栈的应用场景包括函数调用、表达式求值等。

5. 队列队列也是一种特殊的线性表,它允许在表的一端(队尾)插入元素,在另一端(队首)删除元素。

队列的特点是先进先出,即最先插入的元素最先被删除。

队列的应用场景包括进程调度、打印队列等。

6. 递归递归是一种解决问题的方法,通过调用自身来解决规模较小的子问题。

在数据结构中,递归广泛应用于树和图的操作中。

递归需要注意递归的边界条件和递归的停止条件,以避免无限递归的问题。

7. 树树是一种非线性的数据结构,它由n个节点组成,这些节点通过边连接起来。

树的特点是每个节点最多有一个父节点,但可以有多个子节点。

树的应用场景包括文件系统、组织结构等。

8. 二叉树二叉树是一种特殊的树结构,每个节点最多有两个子节点。

二叉树的遍历有三种方式:前序遍历(根-左-右)、中序遍历(左-根-右)和后序遍历(左-右-根)。

二叉树的应用场景包括查找、排序等。

9. 查找算法查找算法是在数据集合中寻找特定元素的过程。

常用的查找算法有顺序查找、二分查找、哈希查找等。

不同的查找算法有不同的时间复杂度和空间复杂度,对于不同规模的数据集合有不同的效率。

(完整word版)数据结构单元2练习参考答案

(完整word版)数据结构单元2练习参考答案

单元练习2一.判断题(下列各题,正确的请在前面的括号内打√;错误的打╳)(×)(1)线性表的链式存储结构优于顺序存储。

(×)(2)链表的每个结点都恰好包含一个指针域。

(√)(3)在线性表的链式存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。

(×)(4)顺序存储方式的优点是存储密度大,插入、删除效率高。

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

(×)(6)顺序表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。

(√)(7)线性表链式存储的特点是可以用一组任意的存储单元存储表中的数据元素。

(√)(8)线性表采用顺序存储,必须占用一片连续的存储单元。

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

(ㄨ)(10)插入和删除操作是数据结构中最基本的两种操作,所以这两种操作在数组中也经常使用。

二.填空题(1)顺序表中逻辑上相邻的元素在物理位置上必须相连。

(2)线性表中结点的集合是有限的,结点间的关系是一对一关系。

(3)顺序表相对于链表的优点是:节省存储和随机存取。

(4)链表相对于顺序表的优点是:插入、删除方便。

(5)采用顺序存储结构的线性表叫顺序表。

(6)顺序表中访问任意一个结点的时间复杂度均为O(1)。

(7)链表相对于顺序表的优点是插入、删除方便;缺点是存储密度小。

(8)在双链表中要删除已知结点*P,其时间复杂度为O(1)。

(9)在单链表中要在已知结点*P之前插入一个新结点,需找到*P的直接前趋结点的地址,其查找的时间复杂度为 O(n) 。

(10)单链表中需知道头指针才能遍历整个链表。

(11)线性表中第一个结点没有直接前趋,称为开始结点。

(12)在一个长度为n的顺序表中删除第i个元素,要移动n-i 个元素。

(13)在一个长度为n的顺序表中,如果要在第i个元素前插入一个元素,要后移n- i +1 个元素。

数据结构 第2章 答案(已核)

数据结构 第2章 答案(已核)

第2章1. 名词解释(1)线性表具有相同数据类型的n(n>=0)个数据元素的有限序列,排列方式为“一个接一个的排列”。

通常记为:(a1,a2,… a i-1,a i,a i+1,…a n)其中,n为表长,n=0时称为空表。

(2)顺序表用顺序存储方式存放的线性表叫顺序表,顺序存储是指在内存中用地址连续的一块存储空间顺序存放线性表的各元素。

特点:①用物理上的相邻实现数据元素逻辑关系上的相邻;②可实现随机存取。

(3)线性单链表用链式存储方式存放的线性表叫链表。

链表是通过一组任意的存储单元来存储线性表中的数据元素,对每个数据元素a i,除了存放数据元素的自身的信息a i之外,还需要存放其后继a i+1 所在的存贮单元的地址,这两部分信息组成一个“结点”,存放数据元素信息的称为数据域data,存放其后继地址的称为指针域next。

因此n个元素的线性表通过每个结点的指针域联成了一个“链子”,称之为链表。

其中:线性、单向链结构的叫线性单链表;线性、双向链结构的叫线性双向链表;环形、单向链结构的叫单循环链表;环形、双向链结构的叫双循环链表。

(4)单循环链表在单链表的基础上,链表最后一个结点的指针域不为空,而是指向第一个结点,使得链表头尾结点相连,整个链表形成一个环。

单循环链表特点:从表中任何一个结点出发均可找到其它结点。

(单链表特点:要找链表中任何一个结点,必须从头结点开始遍历该结点以前的整个链表。

)2. 判断题(在各题后填写“√”或“×”)(1) 线性表若采用链式存储表示时所有存储结点之间的地址可连续可不连续( √ )(2) 链式存储在插入和删除时需要保持数据元素原来的物理顺序,不需要保持原来的逻辑顺序。

(×)(3) 链表中每个结点都是两个域。

(×)解析:单链表中每个结点都是两个域,双链表不是两个域。

(4) 在顺序表中,逻辑上相邻的元素在物理位置上不一定相邻。

(×)(5) 顺序表可以按下标随机(或直接)访问,顺序表还可以从某一指定元素开始,向前或向后逐个元素顺序访问。

数据结构第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章 线性表(第1次更新2012-3)

《数据结构》习题及答案:第2章 线性表(第1次更新2012-3)

第2章线性表一、选择题1.表长为N 的顺序表,当在任何位置上插入或删除一个元素的概率相等时,插入一个元素所需移动元素的平均次数为(),删除一个元素需要移动的元素个数为()。

【**,★】A. (N-1)/2B. NC. N+1D. N-1E. N/2F. (N+1)/2G. (N-2)/22.线性表是具有N 个()的有限序列。

【*】A、表元素B、字符C、数据元素D、数据项E、信息3.“线性表的逻辑顺序和物理顺序总是一致的。

”这个结论是()。

【*】A、正确的B、错误的C、不一定,与具体结构有关。

4.线性表采用链式存储结构时,要求内存中可用存储单元的地址()。

【*,★】A、必须是连续的B、部分地址必须是连续的C、一定是不连续的D、连续或不连续都可以。

5.带头结点的单链表为空的判定条件是()。

【*】A、head==NULLB、head->next==NULLC、head->next==headD、head!=NULL6.不带头结点的单链表head 为空的判定条件是()。

【*】A、head==NULLB、head->next==NULLC、head->next==headD、head!=NULL7.非空的循环单链表head 的尾结点P 满足()。

(注:带头结点)【*】A、P->NEXT=NULLB、p=NULLC、p->next==headD、p==head8.在一个具有n 个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是()。

【*,★】A、O(1)B、O(n)C、O(n2)D、O(nlog2n)9.在一个单链表中,若删除P 所指结点的后继结点,则执行()。

【*,★】A、p->next=p->next->nextB、p=p->next;p->next=p->next->nextC、p->next=p->next;D、p=p->next->next;10.在一个单链表中,若在P所指结点之后插入S所指结点,则执行()。

数据结构第二章习题答案

数据结构第二章习题答案

数据结构第二章习题答案数据结构第二章习题答案第一题:给定一个数组arr,其中包含n个元素,要求编写一个函数,将数组中的所有元素按照奇偶性重新排列。

奇数元素排在偶数元素之前。

请给出实现代码。

解答:```pythondef rearrange(arr):n = len(arr)left = 0right = n - 1while left < right:while arr[left] % 2 != 0 and left < right:left += 1while arr[right] % 2 == 0 and left < right:right -= 1if left < right:arr[left], arr[right] = arr[right], arr[left]left += 1right -= 1return arr```第二题:给定一个字符串,判断其是否为回文串。

回文串是指正读和反读都相同的字符串。

要求不考虑大小写和非字母字符,只考虑字母字符。

解答:```pythondef is_palindrome(s):s = ''.join(filter(str.isalpha, s)).lower()return s == s[::-1]```第三题:给定一个链表,判断链表中是否存在环。

如果链表中存在环,则返回True,否则返回False。

解答:```pythonclass ListNode:def __init__(self, val=0, next=None):self.val = valself.next = nextdef has_cycle(head):slow = fast = headwhile fast and fast.next:slow = slow.nextfast = fast.next.nextif slow == fast:return Truereturn False```第四题:给定一个二叉树,判断其是否为平衡二叉树。

数据结构--线性表习题及答案

数据结构--线性表习题及答案

数据结构--线性表习题及答案第⼆章线性表⼀、选择题1、若长度为n的线性表采⽤顺序存储结构,在其第i个位置插⼊⼀个新元素算法的时间复杂度()。

A. O(log2n)B.O(1)C. O(n)D.O(n2)2、若⼀个线性表中最常⽤的操作是取第i个元素和找第i个元素的前趋元素,则采⽤()存储⽅式最节省时间。

A. 顺序表B. 单链表C. 双链表D. 单循环链表3、具有线性结构的数据结构是()。

A. 图B. 树C. ⼴义表D.栈4、在⼀个长度为n的顺序表中,在第i个元素之前插⼊⼀个新元素时,需向后移动()个元素。

A. n-iB. n-i+1C. n-i-1D. i5、⾮空的循环单链表head的尾结点p满⾜()。

A. p->next==headB. p->next==NULLC. p==NULLD. p==head6、链表不具有的特点是()。

A. 可随机访问任⼀元素B. 插⼊删除不需要移动元素C. 不必事先估计存储空间D. 所需空间与线性表长度成正⽐7、在双向循环链表中,在p指针所指的结点后插⼊⼀个指针q所指向的新结点,修改指针的操作是()。

A. p->next=q;q->prior=p;p->next->prior=q;q->next=q;B. p->next=q;p->next->prior=q;q->prior=p;q->next=p->next;C. q->prior=p;q->next=p->next;p->next->prior=q;p->next=q;D. q->next=p->next;q->prior=p;p->next=q;p->next=q;8、线性表采⽤链式存储时,结点的存储地址()。

A. 必须是连续的B. 必须是不连续的C. 连续与否均可D. 和头结点的存储地址相连续9、在⼀个长度为n的顺序表中删除第i个元素,需要向前移动()个元素。

数据结构单元2 同步训练及答案

数据结构单元2 同步训练及答案

单元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.一个顺序表第一个元素的存储地址是100,每个元素的存储长度为4,则第5个元素的地址是()。

A.110 B.116 C.100 D.120 7.一个长度为n的顺序表中,在第i(1≤i≤n+1)个元素的位置上插入一个新元素时,需要向后移动个元素。

A.n-i B.n-i+1 C.n-i-1 D.i8.一个长度为n的顺序表中,删除第i(1≤i≤n)个元素时,需要向前移动()个元素。

A.n-i B.n-i+1 C.n-i-1 D.i9.在一个长度为n的顺序表中插入一个结点需平均移动()个结点。

A.(n+1)/2 B.n/2 C.(n-1)/2 D.n10.在一个长度为n的顺序表中删除一个结点需平均移动()个结点。

A.(n+1)/2 B.n/2 C.(n-1)/2 D.n11.在()情况下应当选择顺序表作为数据的存储结构。

A.对线性表的主要操作为插入操作B.对线性表的主要操作为插入操作和删除操作C.线性表的表长变化较大D.对线性表的主要操作为存取线性表的元素12.下列算法实现在顺序表L的第i(1≤i≤L->length+1)个结点的位置上插入值为t的元素,其中ListSize为顺序表L的容量,表中第1个结点的数据存放在数组元素L->data[0]中。

数据结构第二单元测验题目的参考答案

数据结构第二单元测验题目的参考答案

数据结构第二单元测验答案一、选择题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 )个结点。

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

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

第二章习题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章(答案)精品

数据结构练习-2章(答案)精品

【关键字】活动、设计、情况、方法、条件、成就、空间、文件、模式、问题、系统、快速、沟通、执行、保持、特点、位置、关键、稳定、网络、需要、工程、方式、增量、结构、速度、关系、优先、解决、实现数据结构作业一、设n为整数,利用大“O”记号,求下列程序段的时间复杂度1、i=0;k=0;Do{ k=k*10*i; i++;} while (i<n);//2、i=1;{else}//3、x=n; //n>14、x=91;while (y>0)else// T(n)=二、选择题1 C )两大类。

A B.顺序结构、链式结构C D.初等结构、构造型结构2、以下数据结构中,哪一个是线性结构( D )?A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串3、在下面的程序段中,对x的赋值语句的频度为( C )for (i=1;i<=n;i++)for (j=1;j<=n;j++)x=x+1;A. O(2n) B.O(n) C.O(n2) D.O(log2n)4、下面关于线性表的叙述中,错误的是哪一个?( B )A.线性表采用顺序存储,必须占用一片连续的存储单元。

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

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

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

5、某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D )存储方式最节省运算时间。

A.单链表 B.仅有头指针的单循环链表 C.双链表 D.仅有尾指针的单循环链表6、静态链表中指针表示的是( B ).A.内存地址 B.数组下标 C.下一元素地址 D.左、右孩子地址7、下面的叙述不正确的是( B、C )A.线性表在链式存储时,查找第i个元素的时间同i的值成正比B. 线性表在链式存储时,查找第i个元素的时间同i的值无关C. 线性表在顺序存储时,查找第i个元素的时间同i 的值成正比D. 线性表在顺序存储时,查找第i个元素的时间同i的值无关8、若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为( C )(1<=i<=n+1)。

数据结构第二单元练习题答案

数据结构第二单元练习题答案

数据结构第二单元练习题答案一、选择1.树最适合用来表示( )A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据2.在下述结论中,正确的是( )①只有一个结点的二叉树的度为0; ②二叉树的度为2;③二叉树的左右子树可任意交换;④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。

A.①②③B.②③④C.②④D.①④3.以下说法正确的是( )A.任何一棵二叉树中至少有一个结点的度为2B.任何一棵二叉树中每个结点的度都为2C.任何一棵二叉树的度肯定等于2D.任何一棵二叉树的度可以小于24.在下列情况中,可称为二叉树的是( )A.每个结点至多有两棵子树的树B.哈夫曼树C.每个结点至多有两棵子树的有序树D.每个结点只有一棵右子树E.以上答案都不对5.深度为h的满m叉树的第k层有( )个结点(1=<k=<h)A.m k-1B.m k-1C.m h-1D.m h-16.在一棵高度为k的满二叉树中,结点总数为( )A.2k-1B.2kC.2k-1D.⎣log2k⎦+17.在一棵三元树中度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,则度为0的结点数为( )个A.4B.5C.6D.78.具有10个叶结点的二叉树中有( )个度为2的结点。

A.8B.9C.10D.ll9.二叉树有n个结点,则其深度为()A.n-1B.nC.(log2n)+`1D.无法确定该题是二叉树不是完全二叉树由二叉树结点的公式:n=n0+n1+n2=n0+n1+(n0-1)=2n0+n1-1,因为n=1001,所以1002=2n0+n1,在完全二叉树树中,n1只能取0或1,在本题中只能取0,故n=501,因此选E。

10.一个具有1025个结点的二叉树的高h为( )A.11 B.10 C.11至1025之间 D.10至1024之间11.一棵具有 n个结点的完全二叉树的深度是( )A.⎣log2n⎦+1B.log2n+1C.⎣log2n⎦D.log2n-112.将有关二叉树的概念推广到三叉树,则一棵有244个结点的完全三叉树的高度( )A.4B.5C.6D.713.将一棵有100个结点的完全二叉树从根结点这一层开始,每一层上从左到右依次对结点编号,根结点的编号为1,则编号为49的结点的左孩子编号为()A.98B.99C.50D.48利用二叉树的性质514.在完全二叉树中,若一个结点是叶结点,则它没( )A.左子结点B.右子结点C.左子结点和右子结点D.左子结点,右子结点和兄弟结点15.当一棵有n个结点的二叉树按层次从上到下,同层次从左到右将数据存放在一维数组A[l..n]中时,数组中第i个结点的左孩子为( )A.A[2i](2i=<n)B.A[2i+1](2i+1=<n)C.A[i/2]D.无法确定16.在下列存储形式中,( )不是树的存储形式?A.双亲表示法B.孩子链表表示法C.孩子兄弟表示法D.顺序存储表示法17.以下说法错误的是( )A.完全二叉树上结点之间的父子关系可由它们编号之间的关系来表达B.三叉链表,二叉树求双亲运算很容易实现C.在二叉链表上,求左.右孩子等很容易实现D.在二叉链表上,求双亲运算的时间性能很好18.对二叉树从1开始进行连续编号,要求每个结点的编号大于其左右孩子的编号,同一个结点的左右孩子中,其左孩子的编号小于其右孩子的编号,则可采用()次序的遍历实现编号。

数据结构第二章参考答案

数据结构第二章参考答案

数据结构第二章参考答案习题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单元课后练习答案

数据结构第2单元课后练习答案

某线性表中最常用的操作是在最后一个 元素之后插入一个元素和删除第一个元 素,则采用 存储方式最节省运算时间。
A. 单链表 B. 仅有头指针的单循环链表 C. 双向链表 D. 仅有尾指针的单循环链表
链表结构不具有下列
特点。
A. 插入和和删除元素无需移动元素 B. 可随机访问链表中的任意元素 C. 无需事先分配存储空间 D. 所需空间与结点个数成正比
O(n)
在类SingleList中增加一个成员函数,将单链 表逆置运算,直接实现该函数并分析其时间 复杂度。
template <class T> void SingleList<T>::invert() { Node<T> *p=first,*q; first=NULL; while (p) { q=p->link; p->link=first; first=p; p=q; } }
在类LinearList 中增加一个成员函数,将顺序 表逆置,实现该函数并分析算法的时间复杂 度。不利用类SeqList 提供的操作直接实现。
template <class T> void SeqList<T>::Invert(){ T e; for (int i=0;i<length/2;i++){ e=elements[i]; elements[i]=elements[length-i-1]; elements[length-i-1]=e; } }
利用线性表类LinearList提供的操作,设计实 现两个集合的交和差运算。
#include <iostream.h> #include "seqlist0.h" #include "conio.h" template <class T> //集合交操作 void InterSection(SeqList<T> &LA,SeqList<T> &LB) { int m=LB.Length(); SeqList<T> LC(10); T x; for (int i=1;i<=m;i++) { LB.Find(i,x);//返回第i个元素到X中 if (LA.Search(x)) LC.Insert(LC.Length()+1,x); } cout<<LC; }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构第二单元练习题答案一、选择1.树最适合用来表示( )A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据2.在下述结论中,正确的是( )①只有一个结点的二叉树的度为0; ②二叉树的度为2;③二叉树的左右子树可任意交换;④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。

A.①②③B.②③④C.②④D.①④3.以下说法正确的是()A.任何一棵二叉树中至少有一个结点的度为2B.任何一棵二叉树中每个结点的度都为2C.任何一棵二叉树的度肯定等于2D.任何一棵二叉树的度可以小于24.在下列情况中,可称为二叉树的是( )A.每个结点至多有两棵子树的树B.哈夫曼树C.每个结点至多有两棵子树的有序树D.每个结点只有一棵右子树E.以上答案都不对5.深度为h的满m叉树的第k层有( )个结点(1=<k=<h)A.m k-1B.m k-1C.m h-1D.m h-16.在一棵高度为k的满二叉树中,结点总数为( )A.2k-1B.2kC.2k-1D.⎣log2k⎦+17.在一棵三元树中度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,则度为0的结点数为( )个A.4B.5C.6D.78.具有10个叶结点的二叉树中有( )个度为2的结点。

A.8B.9C.10D.ll9.二叉树有n个结点,则其深度为()A.n-1B.nC.(log2n)+`1D.无法确定该题是二叉树不是完全二叉树由二叉树结点的公式:n=n0+n1+n2=n0+n1+(n0-1)=2n0+n1-1,因为n=1001,所以1002=2n0+n1,在完全二叉树树中,n1只能取0或1,在本题中只能取0,故n=501,因此选E。

10.一个具有1025个结点的二叉树的高h为( )A.11 B.10 C.11至1025之间 D.10至1024之间11.一棵具有 n个结点的完全二叉树的深度是( )A.⎣log2n⎦+1B.log2n+1C.⎣log2n⎦D.log2n-112.将有关二叉树的概念推广到三叉树,则一棵有244个结点的完全三叉树的高度( )A.4B.5C.6D.713.将一棵有100个结点的完全二叉树从根结点这一层开始,每一层上从左到右依次对结点编号,根结点的编号为1,则编号为49的结点的左孩子编号为()A.98B.99C.50D.48利用二叉树的性质5114.在完全二叉树中,若一个结点是叶结点,则它没( )A.左子结点B.右子结点C.左子结点和右子结点D.左子结点,右子结点和兄弟结点15.当一棵有n个结点的二叉树按层次从上到下,同层次从左到右将数据存放在一维数组A[l..n]中时,数组中第i个结点的左孩子为( )A.A[2i](2i=<n)B.A[2i+1](2i+1=<n)C.A[i/2]D.无法确定16.在下列存储形式中,( )不是树的存储形式?A.双亲表示法B.孩子链表表示法C.孩子兄弟表示法D.顺序存储表示法17.以下说法错误的是()A.完全二叉树上结点之间的父子关系可由它们编号之间的关系来表达B.三叉链表,二叉树求双亲运算很容易实现C.在二叉链表上,求左.右孩子等很容易实现D.在二叉链表上,求双亲运算的时间性能很好18.对二叉树从1开始进行连续编号,要求每个结点的编号大于其左右孩子的编号,同一个结点的左右孩子中,其左孩子的编号小于其右孩子的编号,则可采用()次序的遍历实现编号。

A.先序遍历 B.中序遍历C.后序遍历D.从根开始的层次遍历19.某二叉树T有n个结点,设按某种顺序对T中的每个结点进行编号,编号为1,2,…,n,且有如下性质:T中任一结点V,其编号等于左子树上的最小编号减1,而V的右子树的结点中,其最小编号等于V左子树上结点的最大编号加1。

这时是按( )编号的。

A.中序遍历序列B.前序遍历序列C.后序遍历序列D.层次顺序20.一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足( )A.所有的结点均无左孩子B.所有的结点均无右孩子C.只有一个叶子结点D.是任意一棵二叉树先序序列是“根左右”,后序序列是“左右根”,若要这两个序列相反,只有单支树,所以本题的A和B均对,单支树的特点是只有一个叶子结点,故C是最合适的,选C。

A或B都不全21.对含有()个结点的非空二叉树,采用任何一种遍历方式,其结点访问序列均相同。

A.0B.1C.2D.不存在这样的二叉树22.下面的说法中正确的是( )(1)任何一棵二叉树的叶子结点在三种遍历中的相对次序不变;(2)按二叉树定义,具有三个结点的二叉树共有6种。

A. (1)(2)B. (1)C. (2)D. (1).(2)都错23.以下说法错误的是( )A.存在这样的二叉树,对它采用任何次序的遍历,其结点访问序列均相同B.二叉树是树的特殊情形C.由树转换成二叉树,根结点右子树总是空的D.在二叉树只有一棵子树的情况下也要明确指出该子树是左子树还是右子树24.以下说法正确的是( )A.一般来说,若深度为k的n个结点的二叉树具有最小路径长度,那么从根结点到第k-1层具有最多的结点数为2k-1-1余下的n-2k-1+1个结点在第k层的任一位置上B.若有一个结点是某二叉树子树的先序遍历序列中的最后一个结点,则它必是该子树的后序遍历序列中的最后一个结点。

C.若一个结点是某二叉树子树的前序遍历序列中的最后一个结点,则它必是该子树的中序遍历序列中的最后一个结点。

25.以下说法正确的是( )A.若一个树叶是某二叉树子树的前序遍历序列中的最后一个结点,则它必是该子树的后序遍历序列中的最后一个结点。

B.若一个树叶是某二叉树子树的前序遍历序列中的最后一个结点,则它必是该子树的中序离历序列中的最后一个结点C.二叉树中,具有两个孩子的父结点,在中序遍历序列中,它的后继结点最多只能有一个孩子结点。

D.在二叉树中,具有一个孩子结点,在中序遍历序列中,它没有后继孩子结点。

26.以下说法错误的是( )A.赫夫曼树是带权路径长度最短的树,路径上权值较大的结点离根较近。

B.若一个二叉树的树叶是某子树的中序遍历序列中的第一个结点,则它必是该子树的后序遍历序列中的第一个结点。

C.已知二叉树的前序遍历和后序遍历序列并不能惟一地确定这棵树,因为不知道树的根结点是哪一个。

D.在前序遍历二叉树的序列中,任何结点的子树的所有结点都是直接根在该结点的之后。

27.以下说法正确的是( )A.若一个树叶是某二叉树前序遍历序列中的最后一个结点,则它必是该子树后序遍历序列中的最后一个结点.B.若一个树叶是某二叉树前序遍历序列中的最后一个结点,则它必是该子树中序遍历序列中的最后一个结点.C.在二叉树中,具有两个子女的父结点,在中序遍历序列中,它的后继结点最多只能有一个子女结点.D.在二叉树中,具有一个子女的父结点,在中序遍历序列中,它没有后继子女结点28.二叉树先序遍历:EFHIGJK;中序遍历: HFIEJKG 。

该二叉树根的右子树的根是( )A.EB.FC.GD.H29.已知某二叉树的后续遍历序列是dabec,中序遍历序列是deabc,它的前序遍历序列是()C.decabD.cedba30.某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历的结点访问顺序是dgbaechf,其后序遍历的结点访问顺序是()A.bdgcefhaB.gdbecfha31.若二叉树采用二叉链表存储结构,要交换其所有分支结点左.右子树的位置,利用( )遍历方法最合适。

A.前序B.中序C.后序D.按层次32.已知一算术表达式的中缀形式为 A+B*C-D/E,后缀形式为ABC*+DE/-,其前缀形式为( ) A.-A+B*C/DE B.-A+B*CD/EC.-+*ABC/DED.-+A*BC/DE33.算术表达式a+b*(c+d/e)转为后缀表达式后为( )A.ab+cde/*B.abcde/+*+3C.abcde/*++D.abcde*/++34.一棵左右子树均不空的二叉树在先序线索化后,其空指针域数为()A.0B.1C.2D.不确定二叉树先序遍历序列的第一个结点无前驱,但第一个结点为根结点,有左孩子,所以左指针域不为空。

最后一个结点无后继,而且是叶子结点,无右孩子,所以仍为空。

其余结点均有前驱和后继,所以不会为空。

35.一棵左子树为空的二叉树在先序线索化后,其中空的链域的个数是( )A.不确定B.0C.1D.2左子树为空的二叉树的根结点的左线索为空(无前驱),先序序列的最后结点的右线索为空(无后继),共2个空链域。

36.若X是二叉中序线索树中一个有左孩子的结点,且X不为根,则x的前驱为( )A.X的双亲B.X的右子树中最左的结点C.X的左子树中最右结点D.X的左子树中最右叶结点37.引入二叉线索树的目的是( )A.加快查找结点的前驱或后继的速度B.为了能在二叉树中方便的进行插入与删除C.为了能方便的找到双亲D.使二叉树的遍历结果唯一38.n个结点的线索二叉树上含有的线索数为( )A.2nB.n-lC.n+lD.n线索二叉树是利用二叉树的空链域加上线索,n个结点的二叉树有n+1个空链域。

39.讨论树.森林和二叉树的关系,目的是为了()A.借助二叉树上的运算方法去实现对树的一些运算B.将树.森林按二叉树的存储方式进行存储C.将树.森林转换成二叉树D.体现一种技巧,没有什么实际意义40.利用二叉链表存储树,则根结点的右指针是( )A.指向最左孩子B.指向最右孩子C.空D.非空41.如果T2是由有序树T转换而来的二叉树,那么T中结点的后序就是T2中结点的( )A.先序B.中序C.后序D.层次序42.树的基本遍历策略可分为先根遍历和后根遍历;二叉树的基本遍历策略可分为先序.中序和后序三种遍历。

我们把由树转化得到的二叉树称该树对应的二叉树,则下面( )是正确的。

A.树的先根遍历序列与其对应的二叉树先序遍历序列相同B.树的后根遍历序列与其对应的二叉树后序遍历序列相同C.树的先根遍历序列与其对应的二叉树中序遍历序列相同D.以上都不对43.以下说法正确的是( )A.先根遍历树和先序遍历与该树对应的二叉树,其结果不同B.后根遍历树和先序遍历与该树对应的二叉树,其结果不同C.先序遍历森林和先序遍历与该森林对应的二叉树,其结果不同D.中序遍历森林和中序遍历与该森林对应的二叉树,其结果不同44.森林T中有4棵树,第一.二.三.四棵树的结点个数分别是n1,n2,n3,n4,那么当把森林T 转换成一棵二叉树后,且根结点的左孩子上有()个结点。

A.n1-145.设森林F对应的二叉树为B,它有m个结点,B的根为p,p的右子树结点个数为n,森林F中第一棵树的结点个数是( )A.m-nB.m-n-1C.n+1D.条件不足,无法确定46.设F是一个森林,B是由F变换得的二叉树。

相关文档
最新文档