1、温州大学数据结构考研初试真题(请考生在答题纸上答题,在此试题纸上答题无效)一、单项选择题(共10小题,每小题4分,共40分)1.在数据结构中,与所使用的计算机无关的是数据的()。A. 逻辑结构 B. 存储结构C. 逻辑结构和存储结构 D. 物理结构2.算法的时间复杂度属于一种()。A. 事前统计的方法 B. 事前分析估算的方法C. 事后统计的方法 D. 事后分析估算的方法3.线性表中的所有元素都有一个前驱元素和后继元素。这个说法是()。A. 正确的 B. 错误的4.链式存储的存储结构所占存储空间()A. 分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针B. 只有一部分,存放结点值C
2、. 只有一部分,存储表示结点间关系的指针D. 分两部分,一部分存放结点值,另一部分存放结点所占单元数5.经过以下栈运算后,x的值是()。initStack(s); push(s, a); push(s, b); pop(s, &x); top(s, &x);A. a B. b C. 1 D. 06.数组A中,每个元素的长度为4个字节,行下标i从1到8,列下标j从1到10,从首地址100开始连续存放在存储器内。若该数组按行主序存放,则元素A85的起始地址为();若该数组按列主序存放,则元素A85的起始地址为()。A. 396,217 B. 396,256 C. 256,396 D. 256,21
3、77.若一棵二叉树具有10个度为2的结点,则该二叉树的度为0的结点个数是()。A. 9 B. 11 C. 12 D. 不确定8.设有无向连通图G中的边集E=(A, B),(A, C),(A, E),(B, E),(E, D),(D, F),(F, C)。若从顶点A出发按深度优先搜索进行遍历,则可能得到的一种顶点序列为()。A. A, B, E, C, D, F B. A, C, F, E, B, DC. A, E, B, C, F, D D. A, E, D, F, C, B9.对于长度为9的有序顺序表,若采用折半查找法,在等概率情况下查找成功的平均查找长度为()的值除以9。A. 20 B.
4、18 C. 25 D. 2210.排序算法的稳定性是指()。A. 经过排序之后,能使值相同的数据保持原顺序中的相对位置不变B. 经过排序之后,能使值相同的数据保持原顺序中的绝对位置不变C. 排序算法的性能与待排序元素的数量关系不大D. 排序算法的性能与待排序元素的数量关系密切二、填空题(共5小题,每小题10分,共50分)1.请完成下面顺序表的操作。顺序表的类型如下。typedef struct ElementType *array; /*存放元素的数组*/ int length; /*已经有多少元素*/ int capacity; /*容量*/SeqList;/*在顺序表的第i个位置插入元素x
5、*/int insertList(SeqList *L, int i, ElementType x) if(L-length=L-capacity) return 0; if(iL-length+1) return 0; for(k=L-length-1; k=i-1; k-) L-arrayk+1 = L-arrayk; _; _; return 1;2.假设通讯电文中只用到A,B,C,D,E,F六个字母,它们在电文中出现的相对频率分别为:8,3,16,10,5,20。(1)用这些信息构造哈夫曼树;(2)计算该哈夫曼树的带权路径长度。这棵哈夫曼树有_个结点;该哈夫曼树的带权路径长度(WPL)
6、:_。3.己知序列99,5,36,7,22,17,46,12,2,19,25,28,1,92,用这些序列建小根堆。按照从上到下,从左到右,小根堆的结点序列是:_。4.已知序列13, 2, 16, 3, 8, 28, 4, 10, 5, 6, 7,请按照下面的快速排序算法,给出该序列作升序排列时前三趟的结果。第1趟:_;第2趟:_;第3趟:_。typedef int ElementType;int partition(ElementType r, int low, int high) int pivot; pivot=rlow; while(lowhigh) while(low=pivot) h
7、igh-; rlow=rhigh; while(lowhigh & rlow=pivot) low+; rhigh=rlow; rlow=pivot; return low;void qSort(ElementType r, int low, int high) int pos; if(lowhigh) pos=partition(r, low, high);/*将rlow.high一分为二*/ qSort(r, low, pos-1);/*对左边子表快速排序*/ qSort(r, pos+1, high);/*对右边子表快速排序*/ void quickSort(ElementType r,
8、 int n) qSort(r, 1, n); 5.计算下图所示的AOE网中各顶点所表示的事件最早发生时间、最晚发生时间和各边所表示的活动最早开始时间、最晚开始时间,找出关键路径并计算关键路径的长度。(1)(5分)各事件的最早发生时间和最晚发生时间:v0v1v2v3v4v5v6v7v8最早发生时间最晚发生时间各活动的最早开始时间和最晚开始时间:a1a2a3a4a5a6a7a8A9a10a11最早开始时间最晚开始时间(2)关键路径:_;关键路径的长度:_。(5分)三、应用题(共4小题,每小题15分,共60分)1.设计一个高效算法,删除顺序表中所有元素值为x的元素。假设顺序表的数据元素类型为整型。
9、要求:(1)用下面指定的顺序表结构;(2)时间复杂度为O(n)、空间复杂度为O(1);(3)算法用下面的函数原型表示。/*顺序表结构*/typedef int ElementType;typedef struct ElementType *array; /*存放元素的数组*/ int length; /*已经有多少元素*/ int capacity; /*容量*/SeqList;/*删除所有元素值为x的元素*/void deleteAllX(SeqList *L, int x);2.有两个单链表LA和LB,它们的元素均为非递减有序排列。编写一个算法,将它们合并成一个单链表,要求合并后的单链表中
10、的元素也是非递减有序序列,并且不需要额外申请结点空间。例如,LA=(2, 2, 3),LB=(1, 3, 3, 4),合并后为(1, 2, 2, 3, 3, 3, 4)。要求:(1)用下面指定的链表结构;(2)算法用下面的函数原型表示。/*链表结构*/typedef struct Node ElementType data; struct Node *next;Node, *LinkList; /*LinkList为结构指针类型*/*两个单链表的合并。LA表示第1个单链表,LB表示第2个单链表。相加到LA单链表*/void mergeList(LinkList LA, LinkList LB);3.编写一个算法,完成对一棵二叉树的左右子树的交换。二叉树的存储结构如下:typedef struct Node ElementType data; struct Node *left; struct Node *right;BTNode, *BTree;4.暑假,小白准备去一些城市旅游。有些城市之间有公路,有些城市之间则没有,如下图。为了节省经费以及方便计划旅程,小白希望在出发之前知道任意两个城市之间的最短路径。请设计算法帮助小白解决这个问题!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1