黄老师 发表于 2020-1-26 10:00:00

山东大学20年春季《数据结构》( B 卷)辅导

《数据结构》模拟卷
一、单项选择题
1.以下与数据的存储结构无关的术语是(    )。
A.循环队列       B. 链表      C. 哈希表          D.栈
2.以下数据结构中,哪一个是线性结构(    )。
A.广义表         B. 二叉树      C. 稀疏矩阵         D.串
3.以下那一个术语与数据的存储结构无关?(    )。
A.栈             B. 哈希表      C. 线索树         D.双向链表
4.在下面的程序段中,对x的赋值语句的频度为(    )。
FOR i:=1TOnDO
    FOR j:=1TOnDO   
      x:=x+1;
A. O(2n)       B.O(n)       C.O(n2)         D.O(log2n)
5.下面关于线性表的叙述中,错误的是哪一个(    )。
A.线性表采用顺序存储,必须占用一片连续的存储单元。
B.线性表采用顺序存储,便于进行插入和删除操作。
C.线性表采用链接存储,不必占用一片连续的存储单元。
D.线性表采用链接存储,便于插入和删除操作。
6.线性表是具有n个(    )的有限序列(n>0)。
A.表元素      B.字符      C.数据元素   D.数据项         E.信息项
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/E,后缀形式为ABC*+DE/-,其前缀形式为(    )。
A.-A+B*C/DE       B. -A+B*CD/E      C.-+*ABC/DE         D. -+A*BC/DE
12.算术表达式a+b*(c+d/e)转为后缀表达式后为(    )。
A.ab+cde/*    B.abcde/+*+      C.abcde/*++    D.abcde*/++
二、填空题,在横线处填写合适内容
1. 数据结构的存储结构包括顺序、________、索引和散列等四种。
2. 在程序运行过程中可以扩充的数组是__________分配的数组。这种数组在声明它时需要使用数组指针。
3. 在链表中进行插入和      操作的效率比在顺序存储结构中进行相同操作的效率高。
4. 栈是一种限定在表的一端进行插入和删除的线性表,又被称为___________表。
5. 如果一个对象部分地包含自己,或自己定义自己,则称这个对象是_________的对象。
6. 一棵树的广义表表示为a(b(c,d(e,f),g(h)),i(j,k(x,y))),结点f的层数为_________。假定树根结点的层数为0。
7. 一棵树按照左子女-右兄弟表示法转换成对应的二叉树,则该二叉树中树根结点肯定没有________子女。
8. 向一棵二叉搜索树中插入一个元素时,若元素的值小于根结点的值,则应把它插入到根结点的________上。
9. 设图G=(V,E),V={1,2,3,4}, E={<1,2>,<1,3>,<2,4>,<3,4>},从顶点1出发,对图G进行广度优先搜索的序列有________种。
10. 每次直接或通过基准元素间接比较两个元素,若出现逆序排列就交换它们的位置,这种排序方法叫做__________排序。
11. 快速排序在平均情况下的空间复杂度为____________。
12. 若对长度n=10000的线性表进行二级索引存储,每级索引表中的索引项是下一级20个表项的索引,则一级索引表的长度为________。
三、判断题
1.在顺序表中进行顺序搜索时,若各元素的搜索概率不等,则各元素应按照搜索概率的降序排列存放,则可得到最小的平均搜索长度(   )
2. 在二叉搜索树中,若各结点的搜索概率不等,使得搜索概率越小的结点离树根越近,则得到的是最优二叉搜索树(   )
3. 对于AOE网络,加速任一关键活动都能使整个工程提前完成(   )
4. 直接选择排序是一种稳定的排序方法(   )
5. 闭散列法通常比开散列法时间效率更高(   )
6.数据的逻辑结构是指各数据元素之间的逻辑关系,是用户根据应用需要建立的(   )
7.顺序表和一维数组一样,都可以按下标随机(或直接)访问(   )
8.在一个顺序存储的循环队列中, 队头指针指向队头元素的后一个位置(   )
9.用非递归方法实现递归算法时一定要使用递归工作栈(   )
10.在一棵二叉树中,假定每个结点只有左子女,没有右子女,对它分别进行中序遍历和后序遍历,则具有相同的结果(   )
四、运算题
1. 设有一个二维数组A,按行存放于一个连续的存储空间中,A的存储地址是200,每个数组元素占1个存储字,则A的存储字地址是多少。
A的存储字地址:
2. 已知一棵二叉树的中序和后序序列如下,求该二叉树的高度(假定空树的高度为-1)和度为2、度为1及度为0的结点个数。
    中序序列:c,b,d,e,a,g,i,h,j,f
    后序序列:c,e,d,b,i,j,h,g,f,a
求解一下问题:
    高度:                  度为2的结点数:
    度为1的结点数:          度为0的结点数:
3. 假定一组记录为(36,75,83,54,12,67,60,40),将按次序把每个结点插入到初始为空的一棵AVL树中,请回答在插入时需进行“左单旋转”、“右单旋转”、“先左后右双旋转”、“先右后左双旋转”,“不调整”的结点数各是多少?
    左单旋转结点个数:                右单旋转结点个数:
    先左后右双旋转结点个数:          先右后左双旋转结点个数:
不调整结点个数:
4. 已知一个带权图的顶点集V和边集G分别为:
      V={0,1,2,3,4,5,6};
      E={(0,1)19,(0,2)10,(0,3)14,(1,2)6,(1,5)5,(2,3)26,(2,4)15,(3,4)18,
         (4,5)6,(4,6)6,(5,6)12};
    试根据迪克斯特拉(Dijkstra)算法求出从顶点0到其余各顶点的最短路径,在下面填写对应的路径长度。
    顶点:         0   1   2   3   4   5   6
0                                               
    路径长度:
5. 已知一个数据表为{36,25,25*,62,40,53},请写出在进行快速排序的过程中每次划分后数据表的变化。
(0)
(1)
(2)
(3)
参考答案:
1. A的存储字地址:322   
答案说明:
    按行存储时,计算A地址的公式为
      LOC(i,j)=LOC(0,0)+(i*n+j)*d
    其中首地址LOC(0,0)=200, 每个数组元素的存储占用数d=1, 二维数组的列数n=20,根据题意,元素A的存储地址为
      LOC(6,2)=200+(6*20+2)*1=322
    2.
    高度:4            
度为2的结点数:3      
度为1的结点数:3   
    度为0的结点数:4   
    3.
左单旋转结点个数:1         
    右单旋转结点个数:0            
    先左后右双旋转结点个数:1      
    先右后左双旋转结点个数:0      
    不调整结点个数:6               
    4. 错1个数值扣2分,最多扣全部8分。
      顶点:       0   1   2   3   4   5   6
0        16        10        14        25        21        31
   路径长度:
    5.
    (0)
    (1) 36    
(2)25* 2536 62   
    (3)25* 2536405362   
五、算法设计题
1.设有一个表头为first的单链表。试设计一个算法,通过遍历一趟链表,将链表中所有结点按逆序链接。
参考答案:
解答1
template <class Type > void List <Type>: : Tnerse() {
                if (first== NULL )return ;
                ListNode <Type >* p=first→link ; , *pr =NULL ;
           While (p !=NULL ) {
                        First→link =pr ;
                        Pr =first ;first =p ;p =p→link;
                }
                first ->link =pr ;
}
解答2
template <class Type > void List <Type>: : Tnerse() {
                ListNode <Type >* p , *head = new ListNode <Type > ( ) ;
                While (first ! = NULL ) {
                        P=first ;first = first→link;
                        p→link =head→link ; head→link =p;
                }
                first = head→link ; delete head ;
}

页: [1]
查看完整版本: 山东大学20年春季《数据结构》( B 卷)辅导