1、0012数据结构解析0012数据结构 第一次作业填空题 1、已知栈的基本操作函数: int InitStack(SqStack *S); /构造空栈 int StackEmpty(SqStack *S);/判断栈空 int Push(SqStack*S,ElemType e);/入栈 int Pop(SqStack *S,ElemType *e);/出栈 函数conversion实现十进制数转换为八进制数,请将函数补充完整。void conversion() InitStack(S); scanf(%d”,&N); while(N) (1) ; N=N/8;while( (2) ) Pop(S
2、,&e); printf(%d”,e);/conversion2.设循环队列的容量为70,现经过一系列的入队和出队操作后,front为20,rear为11,则队列中元素的个数为 。3.在一个单链表中删除p所指结点的后继结点时,应执行以下操作:q = p-next;p-next=_ _;4.一个算法的效率可分为( )效率和( )效率。 5.数据结构被形式地定义为(D, R),其中D是( )的有限集合,R是D上的( )有限集合。6.下面程序段的时间复杂度是( )。 for(i=0;im;i+) for(j=0;jnext4. 时间 空间5. 数据元素 关系6. m*n单选题一个具有n个顶点的有向图
3、最多有( )条边A: n(n-1)/2B:n(n+1)/2C: n(n-1)D:n2参考答案:B判断题折半查找只适用于有序表,包括有序的顺序表和链表参考答案:错误判断题用循环单链表表示的链队列中,可以不设队头指针,仅在队尾设置队尾指针。参考答案:正确判断题在单链表中,要访问某个结点,只要知道该结点的地址即可;因此,单链表是一种随机存取结构。参考答案:错误单选题判断一个循环队列Q(最多n个元素)为满的条件是:A:Q-front=(Q-rear+1)%nB:Q-rear=Q-front+1C:Q-front=(Q-rear-1)%nD:Q-rear=Q-front参考答案:A单选题在单链表中,指针
4、p指向元素为x的结点,实现删除x的后继的语句是:A:p=p-nextB:p=p-next-nextC:p-next=pD: p-next=p-next-next参考答案:D单选题在双向循环链表中,在p指针所指的结点后插入一个指针q所指向的新结点,修改指针的操作是:A:p-next=q;q-prior=p;p-next-prior=q;q-next=q;B:q-prior=p;q-next=p-next;p-next-prior=q;p-next=q;C:q-next=p-next;q-prior=p;p-next=q;p-next=q;D: p-next=q;p-next-prior=q;q-
5、prior=p;q-next=p-next;参考答案:B多选题抽象数据类型的组成部分分别为:A:数据对象B:存储结构C:数据关系D:基本操作参考答案:ACD多选题不具有线性结构的数据结构是:A:图B:栈C:广义表D:树参考答案:ACD多选题 算法分析的两个主要方面是( ) A:正确性B:简单性C:空间复杂度D:时间复杂度参考答案:CD第二次作业单选题设一棵完全二叉树有300个结点,则共有 个叶子结点A:150B:152C:154D:156参考答案:A单选题由个结点所构成的二叉树有 种形态.A:2B:3C:4D:5参考答案:D单选题设有两个串p和q,求q在p中首次出现的位置的运算称作:A:连接B
6、:模式匹配C:求子串D:求串长参考答案:B单选题 栈中元素的进出原则是:A:先进先出B:后进先出C:栈空则进D:栈满则出参考答案:B单选题链表是一种采用 存储结构存储的线性表.A:顺序B:星式C:链式D:网状参考答案:C单选题数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为:A:存储结构B:顺序存储结构C:逻辑结构D:链式存储参考答案:B判断题链表的每个结点中都恰好包含一个指针参考答案:错误判断题如果将所有中国人按照生日来排序,则使用哈希排序算法最快参考答案:错误填空题 1.数据的存储结构可用四种基本的存储方法表示,它们分别是( ).2.在具有n个元素的循环队列中,队满时
7、具有 个元素.3. 广义表A=(a),a)的表头是( )。4.稀疏矩阵一般的压缩存储方法有( )和()两种。5.用顺序存储的方法,将完全二叉树中所有结点按层逐个从左到右的顺序存放在一维数组R1.N中,若结点Ri有右孩子,则其右孩子是( )6. 如果从无向图的任一顶点出发进行一次深度优先搜索即可访问所有顶点,则该图一定是( )7.n个顶点的连通图至少有 边。8.已知一个有序表为(11,22,33,44,55,66,77,88,99),则折半查找55需要比较( )次。9.对一棵二叉排序树按( )遍历,可得到结点值从小到大的排列序列。10.一个序列中有10000个元素,若只想得到其中前10个最小元素
8、,则最好采用( )方法参考答案: 1.顺序、链式、索引、散列2.n-13.(a)4.三元组 十字链表5.R2i+16.连通图7.n-18.19.中序10.堆排序第三次作业单选题在对n个元素的序列进行排序时,堆排序所需要的附加存储空间是:A:O(log2n)B:O(1)C:O(n)D:O(nlog2n)参考答案:B单选题若需要在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是( )A:快速排序B:堆排序C:归并排序D:直接插入参考答案:C单选题设哈希表长m=14,哈希函数H(key)=key MOD 11。表中已有4个结点:addr(15)=4,addr(38
9、)=5,addr(61)=6,addr(84)=7 其余地址为空,如用二次探测再散列处理冲突,则关键字为49的地址为:A:3B:5C:8D:9参考答案:C论述题 1.设有编号为1,2,3,4的四辆列车,顺序进入一个栈式结构的车站,具体写出这四辆列车开出车站的所有可能的顺序。2.已知二叉树如下图所示,请写出先序遍历、中序遍历和后序遍历序列。3.编写递归算法,计算二叉树中叶子结点的数目4.函数实现单链表的插入算法,请在空格处将算法补充完整。int ListInsert(LinkList L,int i,ElemType e) LNode *p,*s;intj; p=L;j=0; while(p!=
10、NULL)&(jI-1) next;j+; if(p=NULL|ji-1) return ERROR; s=(LNode *)malloc(sizeof(LNode); s-data=e; (1) ; (2) ; return OK;/*ListInsert*/ 5.对于一个栈,给出输入项A,B,C,D,如果输入项序列为A,B,C,D,试给出全部可能的输出序列。6.已知二叉树的先序遍历序列为ABCDEFGH,中序遍历序列为CBEDFAGH,画出二叉树. 7.1、已知图G的邻接矩阵如下所示:(1)求从顶点1出发的广度优先搜索序列;(2)根据prim算法,求图G从顶点1出发的最小生成树,要求表示出
11、其每一步生成过程。(用图或者表的方式均可)。 参考答案:1. 答:至少有14种。 全进之后再出情况,只有1种:4,3,2,1 进3个之后再出的情况,有3种,3,4,2,1 3,2,4,1 3,2,1,4 进2个之后再出的情况,有5种,2,4,3,1 2,3,4,1 2,1, 3,4 2,1,4,3 2,1,3,4 进1个之后再出的情况,有5种,1,4,3,2 1,3,2,4 1,3,4,2 1, 2,3,4 1,2,4,32.先序:BECFGDH中序:FEBGCHD后序:FEGHDCB3.法一:核心部分为:DLR(liuyu *root) /*中序遍历 递归函数*/if(root!=NULL)
12、 if(root-lchild=NULL)&(root-rchild=NULL)sum+;printf(%dn,root-data); DLR(root-lchild); DLR(root-rchild); return(0);法二:int LeafCount_BiTree(Bitree T)/求二叉树中叶子结点的数目 if(!T) return 0; /空树没有叶子 else if(!T-lchild&!T-rchild) return 1; /叶子结点 else return Leaf_Count(T-lchild)+Leaf_Count(T-rchild);/左子树的叶子数加 上右子树的
13、叶子数 /LeafCount_BiTree 4.(1)s-next=p-next (2)p-next=s5.ABCD ABDC ACDB ACBD ADCB BACD BADC BCAD BCDA CBDA CBAD CDBA DCBA6.7.(1)广度优先遍历序列:1; 2, 3, 4; 5; 6(2)最小生成树(prim算法)第四次作业论述题 1.写出用直接插入排序将关键字序列54,23,89,48,64,50,25,90,34排序过程的每一趟结果。2.设待排序序列为10,18,4,3,6,12,1,9,15,8请写出希尔排序每一趟的结果。增量序列为5,3,2,1。3.写出下列程序的时间复
14、杂度for(i=0; ifor (j=0; jAij=0;4. 写出下列程序的时间复杂度 s=0; for i=0; ifor(j=0; j s+=Bij;sum=s;5. 设循环队列的容量为40(序号从0到39),现经过一系列的入队和出队运算后,有 front=11,rear=19; front=19,rear=11;问在这两种情况下,循环队列中各有元素多少个?6.若一个线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用( )存储方式最节省时间.7.在一个长度为n的顺序表中删除第i个元素,需要向前移动( )个元素.8.带头结点的单链表head为空的判定条件是( )。9.一个循
15、环队列Q的存储空间大小为M,其队头和队尾指针分别为front和rear,则循环队列中元素的个数为: 。10.设串长为n,模式串长为m,则KMP算法所需的附加空间为( )参考答案: 1. 初始: 54,23,89,48,64,50,25,90,34 1:(23,54),89,48,64,50,25,90,34 2:(23,54,89),48,64,50,25,90,34 3:(23,48,54,89),64,50,25,90,34 4:(23,48,54,64,89),50,25,90,34 5:(23,48,50,54,64,89),25,90,34 6:(23,25,48,50,54,64,
16、89),90,34 7:(23,25,48,50,54,64,89,90),34 8:(23,25,48,50,54,64,89,90,34)2.初始: 10,18,4,3,6,12,1,9,15,8 d=5: 10,1,4,3,6,12,18,9,15,8 d=3: 3,1,4,8,6,12,10,9,15,18 d=2: 3,1,4,8,6,9,10,12,15,18 d=1: 1,3,4,6,8,9,10,12,15,183.O(m*n)4.O(n2)5. (1)L=(401911)% 40=8 (2) L=(401119)% 40=32 6. 顺序表 7.n-1 8. head-nex
17、t=NULL 9.(rear-front+M)%M 10. O(m) 单选题计算机算法必须具备输入、输出和 等5个特性A:易读性、稳定性和安全性B:确定性、有穷性和稳定性C:可行性、可移植性和可扩充性D:可行性、确定性和有穷性参考答案:D单选题有8个结点的无向图最多有 条边A:112B:56C:28D:14参考答案:C单选题不含任何结点的空树A:是一棵树B:是一棵二叉树C:是一棵树也是一棵二叉树D:既不是树也不是二叉树参考答案:C单选题 一棵深度为6的满二叉树有 个分支结点A:30B:31C:32D:33参考答案:B单选题 把一棵树转换为二叉树后,这棵二叉树的形态是A:唯一的B:有多种C:有多种,但根结点都没有左孩子D:有多种,但根结点都没有右孩子
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1