数据结构填空
数据结构填空题题库

数据结构填空题题库一、填空题1题目:在数据结构中,_______是一种线性结构,它按照_______的方式存储数据。
答案:数组,连续解析:数组是一种线性结构,它在内存中按照连续的方式存储数据。
二、填空题2题目:在二叉树中,每个节点最多有_______个子节点。
答案:2解析:二叉树中,每个节点最多有两个子节点,分别称为左子节点和右子节点。
三、填空题3题目:栈是一种_______结构,它遵循_______的原则。
答案:线性,后进先出解析:栈是一种线性结构,它遵循后进先出(LIFO)的原则,即最后进入栈的元素最先被访问。
四、填空题4题目:在图的表示中,邻接矩阵使用一个_______来表示图中的边。
答案:矩阵解析:邻接矩阵使用一个矩阵来表示图中的边,矩阵的行和列分别表示图中的顶点,矩阵中的元素表示两个顶点之间是否存在边。
五、填空题5题目:在哈希表中,通过_______函数将关键字映射到哈希表的_______。
答案:哈希,索引解析:哈希表通过哈希函数将关键字映射到哈希表的索引,从而实现高效的查找和插入操作。
六、填空题6题目:在堆排序中,堆是一种_______树,它分为_______堆和_______堆。
答案:完全,最大,最小解析:堆是一种完全二叉树,它分为最大堆和最小堆。
最大堆中,每个节点的值都大于或等于其子节点的值;最小堆中,每个节点的值都小于或等于其子节点的值。
七、填空题7题目:在链表中,每个节点包含两部分,分别是_______和_______。
答案:数据,指针解析:链表中的每个节点包含两部分,一部分是存储数据的区域,另一部分是指向下一个节点的指针。
八、填空题8题目:在树的遍历中,前序遍历的顺序是_______,中序遍历的顺序是_______,后序遍历的顺序是_______。
答案:根-左-右,左-根-右,左-右-根解析:前序遍历先访问根节点,然后按照左子树-右子树的顺序进行遍历;中序遍历先访问左子树,然后访问根节点,最后访问右子树;后序遍历先访问左子树,然后访问右子树,最后访问根节点。
《数据结构》填空作业题(答案)

《数据结构》填空作业题答案第 1 章绪论(已校对无误)1.数据结构包括数据的逻辑结构、数据的存储结构和数据的运算三方面的内容。
2.程序包括两个内容:数据结构和算法。
3.数据结构的形式定义为:数据结构是一个二元组:Data Structure =( D, S)。
4.数据的逻辑结构在计算机存储器内的表示,称为数据的存储结构。
5.数据的逻辑结构可以分类为线性结构和非线性结构两大类。
6.在图状结构中,每个结点的前驱结点数和后继结点数可以有多个。
7.在树形结构中,数据元素之间存在一对多的关系。
8.数据的物理结构,指数据元素在计算机中的标识(映象),也即存储结构。
9.数据的逻辑结构包括线性结构、树形结构和图形结构 3 种类型,树型结构和有向图结构合称为非线性结构。
10. 顺序存储结构是把逻辑上相邻的结点存储在物理上连续的存储单元里,结点之间的逻辑关系由存储单元位置的邻接关系来体现。
11. 链式存储结构是把逻辑上相邻的结点存储在物理上任意的存储单元里,节点之间的逻辑关系由附加的指针域来体现。
12.数据的存储结构可用 4 种基本的存储方法表示,它们分别是顺序存储、链式存储、索引存储和散列存储。
13. 线性结构反映结点间的逻辑关系是一对一的,非线性结构反映结点间的逻辑关系是一对多或多对多。
14.数据结构在物理上可分为顺序存储结构和链式存储结构。
15. 我们把每种数据结构均视为抽象类型,它不但定义了数据的表示方式,还给出了处理数据的实现方法。
16.数据元素可由若干个数据项组成。
17.算法分析的两个主要方面是时间复杂度和空间复杂度。
18.一个算法的时间复杂度是用该算法所消耗的时间的多少来度量的,一个算法的空间复杂度是用该算法在运行过程中所占用的存储空间的大小来度量的。
19.算法具有如下特点:有穷性、确定性、可行性、输入、输出。
20. 对于某一类特定的问题,算法给出了解决问题的一系列操作,每一操作都有它的确切的定义,并在有穷时间内计算出结果。
数据结构程序填空题

数据结构程序填空题一、题目描述:编写一个程序,实现一个简单的链表数据结构,并完成以下操作:1. 初始化链表2. 在链表末尾插入节点3. 在链表指定位置插入节点4. 删除链表指定位置的节点5. 获取链表长度6. 打印链表中的所有节点二、解题思路:1. 定义链表节点结构体Node,包含一个数据域和一个指向下一个节点的指针域。
2. 定义链表结构体LinkedList,包含一个头节点指针和一个记录链表长度的变量。
3. 初始化链表时,将头节点指针置为空,链表长度置为0。
4. 在链表末尾插入节点时,先判断链表是否为空,若为空,则将新节点作为头节点;若不为空,则找到链表最后一个节点,将其指针指向新节点。
5. 在链表指定位置插入节点时,先判断插入位置的合法性,若位置超出链表长度范围,则插入失败;否则,找到插入位置的前一个节点,将新节点插入到其后面。
6. 删除链表指定位置的节点时,先判断删除位置的合法性,若位置超出链表长度范围,则删除失败;否则,找到删除位置的前一个节点,将其指针指向要删除节点的下一个节点,并释放要删除节点的内存空间。
7. 获取链表长度时,直接返回链表结构体中记录的长度变量。
8. 打印链表中的所有节点时,从头节点开始遍历链表,依次输出每个节点的数据域。
三、代码实现:```c#include <stdio.h>#include <stdlib.h>// 定义链表节点结构体typedef struct Node {int data; // 数据域struct Node* next; // 指针域} Node;// 定义链表结构体typedef struct LinkedList {Node* head; // 头节点指针int length; // 链表长度} LinkedList;// 初始化链表void initLinkedList(LinkedList* list) {list->head = NULL; // 头节点指针置为空list->length = 0; // 链表长度置为0}// 在链表末尾插入节点void insertAtEnd(LinkedList* list, int value) {Node* newNode = (Node*)malloc(sizeof(Node)); // 创建新节点newNode->data = value; // 设置新节点的数据域newNode->next = NULL; // 设置新节点的指针域为NULL if (list->head == NULL) {list->head = newNode; // 若链表为空,将新节点作为头节点} else {Node* current = list->head;while (current->next != NULL) {current = current->next; // 找到链表最后一个节点}current->next = newNode; // 将最后一个节点的指针指向新节点}list->length++; // 链表长度加1}// 在链表指定位置插入节点void insertAtPosition(LinkedList* list, int value, int position) {if (position < 0 || position > list->length) {printf("插入位置不合法!\n");return;}Node* newNode = (Node*)malloc(sizeof(Node)); // 创建新节点newNode->data = value; // 设置新节点的数据域if (position == 0) {newNode->next = list->head; // 若插入位置为0,将新节点作为头节点 list->head = newNode;} else {Node* current = list->head;for (int i = 0; i < position - 1; i++) {current = current->next; // 找到插入位置的前一个节点}newNode->next = current->next; // 将新节点的指针指向插入位置的节点 current->next = newNode; // 将插入位置的前一个节点的指针指向新节点}list->length++; // 链表长度加1}// 删除链表指定位置的节点void deleteAtPosition(LinkedList* list, int position) {if (position < 0 || position >= list->length) {printf("删除位置不合法!\n");return;}Node* temp;if (position == 0) {temp = list->head; // 记录要删除的节点list->head = list->head->next; // 将头节点指向下一个节点} else {Node* current = list->head;for (int i = 0; i < position - 1; i++) {current = current->next; // 找到删除位置的前一个节点}temp = current->next; // 记录要删除的节点current->next = current->next->next; // 将删除位置的前一个节点的指针指向删除位置的后一个节点}free(temp); // 释放要删除节点的内存空间list->length--; // 链表长度减1}// 获取链表长度int getLength(LinkedList* list) {return list->length;}// 打印链表中的所有节点void printLinkedList(LinkedList* list) { Node* current = list->head;while (current != NULL) {printf("%d ", current->data);current = current->next; // 遍历链表 }printf("\n");}int main() {LinkedList list;initLinkedList(&list);insertAtEnd(&list, 1);insertAtEnd(&list, 2);insertAtEnd(&list, 3);printf("链表中的节点:");printLinkedList(&list); // 链表中的节点:1 2 3insertAtPosition(&list, 4, 1);printf("链表中的节点:");printLinkedList(&list); // 链表中的节点:1 4 2 3deleteAtPosition(&list, 2);printf("链表中的节点:");printLinkedList(&list); // 链表中的节点:1 4 3int length = getLength(&list);printf("链表的长度:%d\n", length); // 链表的长度:3 return 0;}```四、测试结果:运行以上代码,输出结果为:```链表中的节点:1 2 3链表中的节点:1 4 2 3链表中的节点:1 4 3链表的长度:3```五、总结:通过以上程序的实现,我们成功地完成了一个简单的链表数据结构,并实现了初始化链表、在链表末尾插入节点、在链表指定位置插入节点、删除链表指定位置的节点、获取链表长度以及打印链表中的所有节点等操作。
数据结构习题及答案

第一章概论一、填空题1. 数据结构是一门研究非数值计算的程序设计问题中计算机的 操作对象 以及它们之间的 关系 和运算等的学科。
2. 数据结构被形式地定义为(D, R ),其中D 是 数据元素 的有限集合,R 是D 上的 关系 有限集合。
3. 数据结构包括数据的 逻辑结构 、数据的 存储结构 和数据的 运算 这三个方面的内容。
4. 数据结构按逻辑结构可分为两大类,它们分别是 线性结构 和 非线性结构 。
5. 线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。
6. 在线性结构中,第一个结点 没有 前驱结点,其余每个结点有且只有 1个前驱结点;最后一个结点 没有后续结点,其余每个结点有且只有1个后续结点。
7. 在树形结构中,树根结点没有 前驱 结点,其余每个结点有且只有 1 个前驱结点;叶子结点没有 后续 结点,其余每个结点的后续结点数可以任意多个 。
8. 在图形结构中,每个结点的前驱结点数和后续结点数可以 任意多个 。
9.数据的存储结构可用四种基本的存储方法表示,它们分别是顺序 、 链式 、 索引 和 散列 。
10. 数据的运算最常用的有5种,它们分别是插入 、 删除、修改、 查找 、排序。
11. 一个算法的效率可分为 时间 效率和 空间 效率。
二、单项选择题( B )1. 非线性结构是数据元素之间存在一种:A )一对多关系B )多对多关系C )多对一关系D )一对一关系( C )2. 数据结构中,与所使用的计算机无关的是数据的 结构;A) 存储 B) 物理 C) 逻辑 D) 物理和存储( C )3. 算法分析的目的是:A) 找出数据结构的合理性 B) 研究算法中的输入和输出的关系C) 分析算法的效率以求改进 D) 分析算法的易懂性和文档性( A )4. 算法分析的两个主要方面是:A) 空间复杂性和时间复杂性 B) 正确性和简明性C) 可读性和文档性 D) 数据复杂性和程序复杂性( C )5. 计算机算法指的是:A) 计算方法 B) 排序方法 C) 解决问题的有限运算序列 D) 调度方法( B )6. 计算机算法必须具备输入、输出和 等5个特性。
数据结构程序填空题

数据结构程序填空题一、题目描述:请编写一个程序,实现以下数据结构的相关操作,并填写代码中的空缺部分。
数据结构:链表操作:1. 初始化链表2. 在链表头部插入元素3. 在链表尾部插入元素4. 在指定位置插入元素5. 删除链表头部元素6. 删除链表尾部元素7. 删除指定位置元素8. 查找链表中指定元素的位置9. 获取链表长度10. 打印链表中的所有元素二、解题思路:1. 初始化链表:创建一个头结点,并将头结点的指针域置为空。
2. 在链表头部插入元素:创建一个新节点,将新节点的指针域指向头结点的下一个节点,再将头结点的指针域指向新节点。
3. 在链表尾部插入元素:创建一个新节点,遍历链表找到最后一个节点,将最后一个节点的指针域指向新节点。
4. 在指定位置插入元素:创建一个新节点,遍历链表找到指定位置的前一个节点,将新节点的指针域指向前一个节点的下一个节点,再将前一个节点的指针域指向新节点。
5. 删除链表头部元素:将头结点的指针域指向头结点的下一个节点。
6. 删除链表尾部元素:遍历链表找到倒数第二个节点,将倒数第二个节点的指针域置为空。
7. 删除指定位置元素:遍历链表找到指定位置的前一个节点,将前一个节点的指针域指向指定位置的下一个节点。
8. 查找链表中指定元素的位置:遍历链表,逐个比较节点的值与指定元素的值,直到找到匹配的节点,返回其位置。
9. 获取链表长度:遍历链表,计数器加一,直到遍历到链表尾部。
10. 打印链表中的所有元素:遍历链表,逐个打印节点的值。
三、代码实现:```pythonclass ListNode:def __init__(self, val=0, next=None):self.val = valself.next = nextclass LinkedList:def __init__(self):self.head = ListNode()def insert_at_head(self, val):new_node = ListNode(val)new_node.next = self.head.nextself.head.next = new_nodedef insert_at_tail(self, val):new_node = ListNode(val)curr = self.headwhile curr.next:curr = curr.nextcurr.next = new_nodedef insert_at_position(self, val, position): new_node = ListNode(val)curr = self.headfor _ in range(position):curr = curr.nextnew_node.next = curr.nextcurr.next = new_nodedef delete_at_head(self):if self.head.next:self.head.next = self.head.next.nextdef delete_at_tail(self):curr = self.headwhile curr.next.next:curr = curr.nextcurr.next = Nonedef delete_at_position(self, position): curr = self.headfor _ in range(position):curr = curr.nextcurr.next = curr.next.nextdef find_position(self, val):curr = self.head.nextposition = 0while curr:if curr.val == val:return positioncurr = curr.nextposition += 1return -1def get_length(self):curr = self.head.nextlength = 0while curr:curr = curr.nextlength += 1return lengthdef print_list(self):curr = self.head.nextwhile curr:print(curr.val, end=" ")curr = curr.nextprint()# 测试代码linked_list = LinkedList()linked_list.insert_at_head(3) linked_list.insert_at_head(2) linked_list.insert_at_head(1) linked_list.insert_at_tail(4) linked_list.insert_at_position(5, 2) linked_list.delete_at_head() linked_list.delete_at_tail()linked_list.delete_at_position(1)print("链表中元素的位置:", linked_list.find_position(4))print("链表的长度:", linked_list.get_length())print("链表中的元素:", end="")linked_list.print_list()```四、运行结果:链表中元素的位置: 2链表的长度: 3链表中的元素:1 3 4五、解题总结:本题通过使用链表数据结构和相应的操作方法,实现了对链表的初始化、插入、删除、查找、获取长度和打印等功能。
数据结构填空题大全

数据结构填空题大全二、二、 填空题(每题填空题(每题 6 分,共24分)分) 1. 数据结构是指数据及其相互之间的数据结构是指数据及其相互之间的 联系联系 。
当结点之间存在M 对N (M :N )的联系时,称这种结构为时,称这种结构为 图或者是图的结构图或者是图的结构2. 队列的插入操作是在队列的队列的插入操作是在队列的 尾 进行,删除操作是在队列的进行,删除操作是在队列的 首 进行。
进行。
3. 当用长度为N 的数组顺序存储一个栈时,的数组顺序存储一个栈时,假定用假定用top==N 表示栈空,表示栈空,则表示栈满的条件是则表示栈满的条件是则表示栈满的条件是 top==0 (要超出才为满)。
4. 对于一个长度为n 的单链存储的线性表,在表头插入元素的时间复杂度为的单链存储的线性表,在表头插入元素的时间复杂度为 O(1) ,在表尾插入元素的时间复杂度为尾插入元素的时间复杂度为 O(n) 。
5. 设W 为一个二维数组,其每个数据元素占用4个字节,个字节,行下标行下标i 从0到7 ,列下标j 从0到3 ,则二维数组W 的数据元素共占用的数据元素共占用 128 个字节。
W 中第6 行的元素和第4 列的元素共占用共占用 44 个字节。
若按行顺序存放二维数组W ,其起始地址为100,则二维数组元素W[6,3]的起始地址为的起始地址为 108 。
6.广义表A= (a,(a,b),((a,b),c)),则它的深度为则它的深度为则它的深度为 3 ,它的长度为,它的长度为 3 。
7. 二叉树是指度为2的 有序有序 树。
一棵结点数为N 的二叉树,其所有结点的度的总和是的二叉树,其所有结点的度的总和是 n-1 。
8. 对一棵二叉搜索树进行中序遍历时,得到的结点序列是一个有序序列对一棵二叉搜索树进行中序遍历时,得到的结点序列是一个有序序列 有序列表有序列表 。
对一棵由算术表达式组成的二叉语法树进行后序遍历得到的结点序列是该算术表达式的_后缀表达式后缀表达式(或列波兰式)。
数据结构填空题

一、填空题 (每空1分,共156分)1. 数据结构的存储结构包括顺序、()、索引和散列等四种。
【答案】链接2. 设关键字序列{7,12,26,30,47,58,66,70,82,90},当用折半查找方法查找时,所需比较的次数为3次的关键字分别是()。
【答案】7 26 58 823. 假定一个线性表为 {12, 23, 74, 55, 63, 40, 82, 36},若按key%3条件进行划分,使得同一余数的元素成为一个子表,则包含74的子表长度为()。
【答案】24. 和二分查找相比,顺序查找的优点是除了不要求表中数据元素有序之外,对( )结构也无特殊要求。
【答案】存储5. 设双向循环链表每个结点结构为(data,llink,rlink),则结点*p的前驱结点的地址为( )。
【答案】p->llink6. n个顶点的连通无向图的生成树含有( )条边。
【答案】n-17. 在一个最大堆中,堆顶结点的值是所有结点中的( )。
【答案】最大值8. 假定对长度n=50的有序表进行折半搜索,则对应的判定树中最底下一层的结点数为()个。
【答案】199. 对于带头结点的链栈top,取栈顶元素的操作是()。
【答案】*y=top->next->data 10. 假定一棵三叉树(即度为3的树)的结点个数为50,则它的最小高度为()。
假定树根结点的深度为0。
【答案】411. 二维数组是一种非线性结构,其中的每一个数组元素最多有( )个直接前驱(或直接后继)。
【答案】两个12. 在堆排序中,对任意一个分支结点进行调整运算的时间复杂度为( )。
【答案】O(log2n)13. 队列的删除操作在()进行。
【答案】队头(或队首)14. 设图G = (V, E),V = {1, 2, 3, 4}, E = {<1, 2>, <1, 3>, <2, 4>, <3, 4>},从顶点1出发,对图G进行广度优先搜索的序列有( )种。
《数据结构》填空作业题(答案)

《数据结构》填空作业题答案第1章绪论(已校对无误)1.数据结构包括数据的逻辑结构、数据的存储结构和数据的运算三方面的内容。
2.程序包括两个内容:数据结构和算法。
3. 数据结构的形式定义为:数据结构是一个二元组:Data Structure =(D,S)。
4. 数据的逻辑结构在计算机存储器内的表示,称为数据的存储结构。
5. 数据的逻辑结构可以分类为线性结构和非线性结构两大类。
6. 在图状结构中,每个结点的前驱结点数和后继结点数可以有多个。
7. 在树形结构中,数据元素之间存在一对多的关系。
8. 数据的物理结构,指数据元素在计算机中的标识(映象),也即存储结构。
9. 数据的逻辑结构包括线性结构、树形结构和图形结构3种类型,树型结构和有向图结构合称为非线性结构。
10. 顺序存储结构是把逻辑上相邻的结点存储在物理上连续的存储单元里,结点之间的逻辑关系由存储单元位置的邻接关系来体现。
11. 链式存储结构是把逻辑上相邻的结点存储在物理上任意的存储单元里,节点之间的逻辑关系由附加的指针域来体现。
12. 数据的存储结构可用4种基本的存储方法表示,它们分别是顺序存储、链式存储、索引存储和散列存储。
13. 线性结构反映结点间的逻辑关系是一对一的,非线性结构反映结点间的逻辑关系是一对多或多对多。
14. 数据结构在物理上可分为顺序存储结构和链式存储结构。
15. 我们把每种数据结构均视为抽象类型,它不但定义了数据的表示方式,还给出了处理数据的实现方法。
16. 数据元素可由若干个数据项组成。
17. 算法分析的两个主要方面是时间复杂度和空间复杂度。
18. 一个算法的时间复杂度是用该算法所消耗的时间的多少来度量的,一个算法的空间复杂度是用该算法在运行过程中所占用的存储空间的大小来度量的。
19. 算法具有如下特点:有穷性、确定性、可行性、输入、输出。
20. 对于某一类特定的问题,算法给出了解决问题的一系列操作,每一操作都有它的确切的定义,并在有穷时间内计算出结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.数据的逻辑结构在计算机存储器内的表 示,称为数据的存储结构
6. 设某 双链表的 结点形 式为 prior data next,若要在指针 q 所指结点(中间结点) 的后面插入一个新结点 s,则需执行下述 语 句 段 : s→prior=q ; s->next=q->next ; q->next->prior=s;q→next=s; 7. 串 S=″I□am□a□worker″(注: □为一个空 格)的长度是 13 8.数据的逻辑结构分为有四种,分别是集 合结构、树状结构、网状结构和线性结构。 9.下列程序段的时间复杂度为 0(n2)product = 1;for (i = n;i>0; i--)for (j = i+1; j<n; j++)product *=j; 10.产生冲突现象的两个关键字称为该散 列函数的同义词
76.对关键字序列(50,34,92,19,11,68, 56,41,79)进行直接插入排序,当将第 8 个关键字 41 插入到当前的有序子表中时, 为寻找插入位置需进行 5 次关键字之间的 比较。。
81.在队列中,允许进行插入操作的一端称 为队尾,的查找,若根结点元素 的键值大于被查找元素的键值,则应该在
31.图的存储结构包括有邻接矩阵和邻接 表
32.在一棵度为 3 的树中,度为 2 的结点个 数是 1,度为 0 的结点个数是 6,则度为 3 的结点个数是 2 33.将一个 n 阶对称矩阵的下三角各元素 (包括对角线上的元素)存储在一维数组 v 中,则 v 至少有 n(1+n) /2 个元素。 34.任意一棵具有 n 个结点的二叉树,若它 有 m 个叶子,则该二叉树上度数为 1 的结 点数 n-2m+1 个。 35.结点数为 20 的二叉树可能达到的最大 高度为 20 26.在单链表中,若在 p 所指结点 前 插入 一个新结点,时间复杂度为 0(n) 37.引起循环队列队头位置发生变化的操 作是(Q,front+1)%maxsize 38.树中结点的最大层次称为树的高度。 39.对 n 个元素进行起泡排序时,最少的比 较次数是 n-1 40.在 n 个结点的顺序表中删除一个结点需 平均移动(n-1)/2 个结点。 41.在 n 个结点的顺序表中插入一个结点需 平均移动 n/2 个结点。 42.若二叉树中度为 2 的结点有 n 个,则度 为 0 的结点个数为 n+1。 43.已知完全二叉树 T 的第 5 层只有 7 个结 点,则该树共 11 个叶子结点。 45.两个串相等的充分必要条件是两个串 的长度相等且对应位置的字符相同
1.数据结构研究的三个方面有:数据间的 存储结构、数据间的逻辑结构和在数据上
施加的运算。
2.数据的存储结构可用四种基本的存储方 法表示,它们分别是顺序存储方式、链式
存储方式、索引存方式和散列方式。
3.数组采用顺序存储方式表示是因为通常 不对数组进行插入删除操作。
4.队列的修改是按先进先出_的原则进行 的;栈的修改是按先进后出的原则进行的。
11.在一个长度为 n 的循环链表中,删除其 元素值为 x 的结点的时间复杂度为 0(n) 12. 已 知 链 栈 的 结 点 结构 为 , 栈 顶 指 针 为 top,则实指针 p 所指结点插入栈顶的语句 依次为 p→next=top;和 top=p;。 13.一个算法的效率可分为时间效率和空 间效率。
47.已知 substr(s,i,len)函数的功能是返回串 s 中第 i 个字符开始长度为 len 的子串, strlen(s)函数的功能是返回串 s 的长度。若 s=”ABCDEFGHIJK”,t=”ABCD”, 执 行 运 算 substr(s,strlen(t), strlen(t)) 后 的 返 回 值 为 “DEFG”。 48.去除广义表 LS=(a1,a2,a3,……,an)中第 1 个元素,由其余元素构成的广义表称为 LS 的表尾 49.对关键字序列(50,34,92,19,11,68, 56,41,79)进行直接插入排序,当将第 7 个关键字 56 插入到当前的有序子表中时, 为寻找插入位置需进行 3 次关键字之间的 比较。
11.在一个长度为 n 的循环链表中,删除其 元素值为 x 的结点的时间复杂度为 0(n) 12. 已 知 链 栈 的 结 点 结 构 为 , 栈顶 指 针 为 top,则实指针 p 所指结点插入栈顶的语句 依次为 p→next=top;和 top=p;。 13.一个算法的效率可分为时间效率和空 间效率。
5.数据的逻辑结构在计算机存储器内的表 示,称为数据的存储结构
6. 设某双 链表的结 点形式为 prior data next,若要在指针 q 所指结点(中间结点) 的后面插入一个新结点 s,则需执行下述 语 句 段 : s→prior=q ; s->next=q->next ; q->next->prior=s;q→next=s; 7. 串 S=″I□am□a□worker″(注: □为一个空 格)的长度是 13 8.数据的逻辑结构分为有四种,分别是集 合结构、树状结构、网状结构和线性结构。 9.下列程序段的时间复杂度为 0(n2)product = 1;for (i = n;i>0; i--)for (j = i+1; j<n; j++)product *=j; 10.产生冲突现象的两个关键字称为该散 列函数的同义词
50.在文本编辑程序中查找某一特定单词 在文本中出现的位置,可以利用串的模式
匹配或子串定位运算。
51.若以邻接矩阵表示有向图,则邻接矩阵 上第 i 行中非零元素的个数即为顶点 vi 的 以 vi 为起始点的个数
52.已知广义表 LS 为空表,则其深度为 1 53. 假 设 以 行 优 先 顺 序 存 储 三 维 数 组 A[5][6],其中元素 A[0][0]的地址为 1100, 且每个元素占 2 个存储单元,则 A[4][3] 的地址是 1154。 54.已知一棵二叉树的先序序列为 ABCD, 中序序列为 BCAD,则它的后序序列为 CBDA。 56.在含 n 个顶点的连通图中,任意两个不 同顶点之间的一条简单路径最多包含 n-1 条边。
该二叉树的右半区上继续查找。
85.对关键字序列(52,80,63,44,48,91) 进行一趟快速排序之后得到的结果为【48 44】52 【63 80 91】/【44】48 52 63【80 91】 /44 48 52 63 80【91】 86.假设以 S 和 X 分别表示进栈和退栈操 作,则对输入序列 a,b,c,d,e 进行一系列栈 操作 SSXSXSSXXX 之后,得到的输出序 列为 bceda 88.如果在排序前,关键字序列已接近正序 或逆序,则在堆排序和快速排序两者之中,
15.. 线 性 表 的 元 素 长 度 为 4 , LOC(a1)=1000,则 LOC(a5)= 1016。 17.删除双向循环链表中*p 的前驱结点(存 在)应执行的语句是 p→prior=p→prior→prior; p→prior→pri or→next=p; 18.已知在结点个数大于 1 的单循环链表 中,指针 p 指向表中某个结点,则下列程 序段执行结束时,指针 q 指向结点*p 的直 接前驱结点。
19.若有一棵二叉排序树,则按照中序遍历 顺序将产生一个按关键字有序 序列。
20.已知指针 p 指向单链表中某个结点,则 语句 p -> next =p -> next -> next 的作用是 删除 P 的直接后继结点。 21.假设一个 6 阶的下三角矩阵 B 按列优先 顺序压缩存储在一维数组 A 中,其中 A[0] 存储矩阵的第一个元素 b11,则 A[14]存 储的元素是 b63。 22.栈的操作是按先进后出的原则进行的。 23.空串的长度是 0;空格串的长度是空格 的个数。
24.如果入栈序列是 1,3,5,…,97,99, 且出栈序列的第一个元素为 99,则出栈序 列中第 30 个元素为 41 25.若一棵满三叉树中含有 121 个结点,则 该树的深度为 5。 26.假设 S 和 X 分别表示进栈和出栈操作, 列“ABC”得到输出序列“BCA”的操作序列 为 SSXSXX,则由“a*b+c/d”得到“ab*cd/+” 的操作序列为 sxssxxssxssxxx 28.栈下溢是指在栈空时进行出栈操作。 29. 某 二 叉 树 的 先 根 遍 历 序 列 是 ABDGCEFH ; 中 根 遍 历 序 列 是 DGBAECHF ; 则 其 后 根 遍 历 序 列 是 GDBEHFCA 30.链栈 s 在进行出栈操作时首先要判断栈 空
作,它们依次是 s→next→next=p→next; 70.假设一个 10 阶的下三角矩阵 A 按列优 顺序压缩存储在一维数组 C 中,则 C 数组 的大小应为 55 71.在无向图中,若从顶点 a 到顶点 b 存在 路径,则称 a 与 b 之间是连通的。 72.已知完全二叉树 T 的第 4 层只有 3 个结 点,则该树共有 5 个叶子结点。 74. 设 S1="good",S2=" ",S3="book" , 则 S1 , S2 和 S3 依 次 联 接 后 的 结 果 是 “good_book” 75.在 n 个结点的线索二叉链表中,有 n+1 个线索指针。
下,该二叉排序树在查找成功时的平均查
找长度是(n+1)/2。 66.在有向图中,以顶点 v 为起点的弧的数 目称为 v 的出度 67.对长度为 20 的有序表进行二分查找的 判定树的高度为 5 68.已知在一棵含有 n 个结点的树中,只有 度为 k 的分支结点和度为 0 的叶子结点, 则 该 树 中 含 有 的 叶 子 结 点 的 数 目 为 n(n-1/k) 69.在如图所示的链表中,若在指针 p 所指 的结点之后插入数据域值相继为 a 和 b 的 两个结点,则可用下列两个语句实现该操