数据结构模拟题及复习资料.docx
数据结构试题(A05)一、选择题(共10小题,每小题1分,共10分)1.下面程序段的时间复杂度是( )m=0;for(i=1;i<=n;i+) for(j=1;j<=n;j+) m=m+1;A. O(n2) B.O(m+n+1) C.O(m+n) D. O(n)2.在单链表中,指针p指向元素为x的结点,实现“删除x的后继”的语句是( )A.p=p->next; B.p->next=p->next->next;C.p->next=p; D.p=p->next->next;3.在长度为n的顺序表,当在任何位置上删除一个元素的概率相等时,删除一个元素需要移动的元素的平均个数为( ) A.n/2 B.(n-1)/ 2 C.(n+1)/2 D.(n+2)/24.一个栈的输入序列为1 2 3 4 5,则下列序列中不可能是栈的输出序列的是( ) A. 2 3 4 1 5B. 5 4 1 3 2 C. 2 3 1 4 5 D. 1 5 4 3 26.设循环队列中数组的下标范围是1n,其头尾指针分别为f与r,则其元素个数为( ) A. r-f B. r-f+1 C. (r-f) mod n+1D. (r-f+n) mod n7.以下序列不是堆的是( )。 A.(100,85,98,77,80,60,82,40,20,10,66) B.(100,98,85,82,80,77,66,60,40,20,10) C.(100,85,40,77,80,60,66,98,82,10,20) D.(10,20,40,60,66,77,80,82,85,98,100)8在有序表(12,24,36,48,60,72,84)中折半查找关键字72时所需进行的关键字比较次数为( )。 A. 3 B. 4 C. 5 D. 2 9.在待排序的元素序列基本有序的前提下,效率最高的排序方法是 ( )。二、填空题(共20小题,每小题1分,共20分)1、在单链表中,删除指针P所指结点的后继结点的语句是 。2、线性表的两种存储结构分别是 与 。3、己知完全二叉树的第4层有5个结点,则其叶子结点数是 。4、将下三角矩阵A1.8,1.8的下三角部分逐行地存储到起始地址为1000的内存单元中,已知每个元素占4个单元,则A7,5的地址是 。5、有n个结点的强连通有向图G至少有 条弧。7、在有序表A1.20中,采用二分查找算法查找元素值等于A12的元素,所比较的元素的下标依次为 。8、直接选择排序算法所执行的元素交换次数最多为 。9、在带有头结点的单链表L中,第一个元素结点的指针是 。10、具有100个结点的完全二叉树的深度是 。11、在一个长度为n的顺序表中第i个元素(1in)之前插入一个元素时,需向后移动_个元素。12、在队列中,允许进行插入操作的一端称为_,允许进行删除操作的一端称为_。13、在一个带头结点的单循环链表中,p指向尾结点的直接前驱,则指向头结点的指针head可用p表示为head= 。15、对于一棵具有n个结点的树,该树中所有结点的度数之与为_。16、 8层完全二叉树至少有 个结点,拥有300个结点的完全二叉树的最大层数为 。 17、 有n个结点的有向连通图,其边数最多为_条,最少有_条。18、设n0为赫夫曼树的叶子结点数目,则该赫夫曼树共有_个结点。19、顺序查找n个元素的顺序表,若查找成功,则比较关键字的次数最多为_次。三、判断题(共10小题,每小题1分,共10分)判断下列各题是否正确,若正确,在( )内打“ ”, 否则打“ ”。1、( )若某二叉树的叶子结点数为1,则其先序序列与后序序列一定相反。2、( )线性表采用链表方式与顺序表方式存储,执行插入与删除运算的时间复杂度都是O(n),因而两种存储方式的插入、删除运算所花费的时间相同。3、( )在栈为空的情况下,不能作出栈操作,否则产生下溢。5、( )在一个有向图的邻接表中,如果某个顶点的链表为空,则该顶点的度一定为0。6、( )如果有向图G=(V,E)的拓扑序列唯一,则图中必定仅有一个顶点的入度为0,一个顶点的出度为0。8、( )广义表的长度是指广义表中原子的个数。9、( )在快速排序算法中,以待排序的n个记录中的第一个记录的键值为基准,将所有记录分为两组,该记录就在这两组的中间,这也是该记录的最终位置。10、( )在一个大根堆中,最小元素不一定在最后。四、解答题(共30分,其中第1、2小题各占7分,第3、4小题各占8分)1、已知二叉树T的先序遍历序列为ABCDEFGHIJKLMN,中序遍历序列为DCFEGBAIHKJMLN。请画出该二叉树T,并写出它的后序遍历序列。abcde2、已知一个无向图的顶点集为a, b, c, d, e ,其邻接矩阵如下所示 (1)画出该图的图形;(2)根据邻接矩阵从顶点a出发进行深度优先遍历与广度优先遍历,写出相应的遍历序列。3、已知线性表的关键字集合87, 25, 310, 08, 27, 132, 68, 95, 187, 123, 70, 63, 47,已知哈希函数为H(k)=k MOD 13,采用拉链法处理冲突,设计出该哈希表的结构。4、 输入下列整数序列,画出建立的二叉排序树,最后分别图示将其中50,86删除后的二叉排序树。(86,50,78,90,64,55,23,100,40,80,45)。五、算法题(共30分,其中第1、2小题各占6分,第3、4小题各占9分)1、假设一个单循环链表L的数据域为整型,设计一个算法,求该表中所有结点的数据之与。2、设某二叉树以二叉链表为存储结构,请写出求其高度的递归算法。3、假设有两个按元素值递增有序排列的线性表A与B,均以单链表作存储结构,请编写算法将表A与表B归并成一个按元素非递减有序(允许值相同)排列的线性表C。4、试写出二叉链表表示的二叉树的先序遍历的非递归算法。数据结构试题(A05参考答案)一、 选择题15:ABBBB 69:DCDD二、 填空题1、p->next=p->next->next;2、顺序,链接3、64、11325、n6、O(n2)7、10,15,128、n-19、L->next10、711、n-i+112、队尾,队头13、p->next->next14、s->prior->next=s, (或p->prior->prior->next=s)15、n-116、128,917、n(n-1),n18、2n0-119、n三、 判断题1、 2、 3、 5、6、 8、 9、 10、四、 简答题1、二叉树如下图:其后序遍历序列是:DFGECBIKMNLJHA2、(1)该图的图形如下图:(2)根据邻接矩阵从顶点a出发进行深度优先遍历与广度优先遍历,其深度优先遍历序列是abdce,广度优先遍历序列是abedc。3、得到的哈希表如下图所示:4、建立的二叉排序树如下图:删除50后的二叉排序树如下图:再次删除86后的的二叉排序树如下:五、算法题1、 解:设存储结构如下:typedef struct node int data; struct node *next;Lnode, *CLinkList;且设单循环链表是带头结点的,算法如下:int sumOfLinkList(CLinkList L)int sum=0; Lnode *p=L->next;while(p!=L)sum+=p->data; p=p->next;return sum;2、 解:设存储结构如下:typedef struct nodeElemType data; struct node *lchild, *rchild;Tnode, *BinTree;算法如下:int depth(BinTree T) if(!T) return 0;else int DL, DR; DL=depth(T->lchild);DR=depth(T->Rchild);if(DL>DR) return DL+1;else return DR+1;3、(答案略)4、(答案略)