您好,欢迎访问三七文档
[0012]《数据结构》第一次作业[填空题]1、已知栈的基本操作函数:intInitStack(SqStack*S);//构造空栈intStackEmpty(SqStack*S);//判断栈空intPush(SqStack*S,ElemTypee);//入栈intPop(SqStack*S,ElemType*e);//出栈函数conversion实现十进制数转换为八进制数,请将函数补充完整。voidconversion(){InitStack(S);scanf(%d”,&N);while(N){(1);N=N/8;}while((2)){Pop(S,&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;jn;j++)a[i][j]=i*j;参考答案:1.(1)Push(S,N%8)(2)!StackEmpty(S)2.613.q-next4.时间空间5.数据元素关系6.m*n[单选题]一个具有n个顶点的有向图最多有()条边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[单选题]在单链表中,指针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-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[单选题]由3个结点所构成的二叉树有种形态.A:2B:3C:4D:5参考答案:D[单选题]设有两个串p和q,求q在p中首次出现的位置的运算称作:A:连接B:模式匹配C:求子串D:求串长参考答案:B[单选题]栈中元素的进出原则是:A:先进先出B:后进先出C:栈空则进D:栈满则出参考答案:B[单选题]链表是一种采用存储结构存储的线性表.A:顺序B:星式C:链式D:网状参考答案:C[单选题]数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为:A:存储结构B:顺序存储结构C:逻辑结构D:链式存储参考答案:B[判断题]链表的每个结点中都恰好包含一个指针参考答案:错误[判断题]如果将所有中国人按照生日来排序,则使用哈希排序算法最快参考答案:错误[填空题]1.数据的存储结构可用四种基本的存储方法表示,它们分别是().2.在具有n个元素的循环队列中,队满时具有个元素.3.广义表A=((a),a)的表头是()。4.稀疏矩阵一般的压缩存储方法有()和()两种。5.用顺序存储的方法,将完全二叉树中所有结点按层逐个从左到右的顺序存放在一维数组R[1..N]中,若结点R[i]有右孩子,则其右孩子是()6.如果从无向图的任一顶点出发进行一次深度优先搜索即可访问所有顶点,则该图一定是()7.n个顶点的连通图至少有边。8.已知一个有序表为(11,22,33,44,55,66,77,88,99),则折半查找55需要比较()次。9.对一棵二叉排序树按()遍历,可得到结点值从小到大的排列序列。10.一个序列中有10000个元素,若只想得到其中前10个最小元素,则最好采用()方法参考答案:1.顺序、链式、索引、散列2.n-13.(a)4.三元组十字链表5.R[2i+1]6.连通图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)=keyMOD11。表中已有4个结点:addr(15)=4,addr(38)=5,addr(61)=6,addr(84)=7其余地址为空,如用二次探测再散列处理冲突,则关键字为49的地址为:A:3B:5C:8D:9参考答案:C[论述题]1.设有编号为1,2,3,4的四辆列车,顺序进入一个栈式结构的车站,具体写出这四辆列车开出车站的所有可能的顺序。2.已知二叉树如下图所示,请写出先序遍历、中序遍历和后序遍历序列。3.编写递归算法,计算二叉树中叶子结点的数目4.函数实现单链表的插入算法,请在空格处将算法补充完整。intListInsert(LinkListL,inti,ElemTypee){LNode*p,*s;intj;p=L;j=0;while((p!=NULL)&&(jI-1)){/I-1)){p=p-next;j++;}if(p==NULL||ji-1)returnERROR;s=(LNode*)malloc(sizeof(LNode));s-data=e;(1);(2);returnOK;}/*ListInsert*/5.对于一个栈,给出输入项A,B,C,D,如果输入项序列为A,B,C,D,试给出全部可能的输出序列。6.已知二叉树的先序遍历序列为ABCDEFGH,中序遍历序列为CBEDFAGH,画出二叉树.7.1、已知图G的邻接矩阵如下所示:(1)求从顶点1出发的广度优先搜索序列;(2)根据prim算法,求图G从顶点1出发的最小生成树,要求表示出其每一步生成过程。(用图或者表的方式均可)。!--[if!vml]--!--[endif]--!--[if!vml]--!--[endif]--参考答案:1.答:至少有14种。①全进之后再出情况,只有1种:4,3,2,1②进3个之后再出的情况,有3种,3,4,2,13,2,4,13,2,1,4③进2个之后再出的情况,有5种,2,4,3,12,3,4,12,1,3,42,1,4,32,1,3,4④进1个之后再出的情况,有5种,1,4,3,21,3,2,41,3,4,21,2,3,41,2,4,32.先序:BECFGDH中序:FEBGCHD后序:FEGHDCB3.法一:核心部分为:DLR(liuyu*root)/*中序遍历递归函数*/{if(root!=NULL){if((root-lchild==NULL)&&(root-rchild==NULL)){sum++;printf(%d\n,root-data);}DLR(root-lchild);DLR(root-rchild);}return(0);}法二:intLeafCount_BiTree(BitreeT)//求二叉树中叶子结点的数目{if(!T)return0;//空树没有叶子elseif(!T-lchild&&!T-rchild)return1;//叶子结点elsereturnLeaf_Count(T-lchild)+Leaf_Count(T-rchild);//左子树的叶子数加上右子树的叶子数}//LeafCount_BiTree4.(1)s-next=p-next(2)p-next=s5.ABCDABDCACDBACBDADCBBACDBADCBCADBCDACBDACBADCDBADCBA6.!--[if!vml]--!--[endif]--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.写出下列程序的时间复杂度for(i=0;ifor(j=0;jA[i][j]=0;4.写出下列程序的时间复杂度s=0;fori=0;ifor(j=0;js+=B[i][j];sum=s;5.设循环队列的容量为40(序号从0到39),现经过一系列的入队和出队运算后,有①front=11,rear=19;②front=19,rear=11;问在这两种情况下,循环队列中各有元素多少个?6.若一个线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用()存储方式最节省时间.7.在一个长度为n的顺序表中删除第i个元素,需要向前移动()个元素.8.带头结点的单链表head为空的判定条件是()。9.一个循环队列Q的存储空间大小为M,其队头和队尾指针分别为front和rear,则循环队列中元素的个数为:。10.设串长为n,模式串长为m,则KMP算法所需的附加空间为()参考答案:1.初始:54,23,89,48,64,50,25,90,341:(23,54),89,48,64,50,25,90,342:(23,54,89),48,64,50,25,90,343:(23,48,54,89),64,50,25,90,344:(23,48,54,64,89),50,25,90,345:(23,48,50,54,64,89),25,90,346:(23,25,48,50,54,64,89),90,347:(23,25,48,50,54,64,89,90),348:(23,25,48,50,54,64,89,90,34)2.初始:10,18,4,3,6,12,1,9,15,8d=5:10,1,4,3,6,12,18,9,15,8d=3:3,1,4,8,6,12,10,9,15,18d=2:3,1,4,8,6,9,10,12,15,18d=1:1,3,4,6,8,9,10,12,15,183.O(m*n)4.O(n^2)5.(1)L=(40+19-11)%40=8(2)L=(40+11-19)%40=326.顺序表7.n-18.head-next==NULL9.(rear-front+M)%M10.O(m)[单选题]计算机算法必须具备输入、输出和等5个特性A:
本文标题:0012数据结构
链接地址:https://www.777doc.com/doc-3047022 .html