02331数据结构课后练习题
数据结构(代码02331)2010年10月试题及答案
全国2010年10月高等教育自学考试数据结构试题课程代码:02331一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.数据的四种存储结构是( ) A-P3A.顺序存储结构、链接存储结构、索引存储结构和散列存储结构B.线性存储结构、非线性存储结构、树型存储结构和图型存储结构C.集合存储结构、一对一存储结构、一对多存储结构和多对多存储结构D.顺序存储结构、树型存储结构、图型存储结构和散列存储结构2.若对某线性表最常用的操作是在最后一个结点之后插入一个新结点或删除最后一个结点,要使操作时间最少,下列选项中,应选择的存储结构是( ) D-P26(带尾指针)A.无头结点的单向链表B.带头结点的单向链表C.带头结点的双循环链表D.带头结点的单循环链表3.若带头结点的单链表的头指针为head,则判断链表是否为空的条件是( )C P22A.head=NULLB.head->next=NULLC.head!=NULLD.head->next!=head4.若元素的入栈顺序为1,2,3....,n,如果第2个出栈的元素是n,则输出的第i(1<=i<=n)个元素是( )DA.n-iB.n-i+lC.n-i+2D.无法确定5.串匹配算法的本质是( ) C P55A.串复制B.串比较C.子串定位D.子串链接6.设有一个10阶的对称矩阵A,采用行优先压缩存储方式,a11为第一个元素,其存储地址为1,每个元素占一个字节空间,则a85的地址为( ) C P61A.13B.18C.33D.407.若一棵二叉树的前序遍历序列与后序遍历序列相同,则该二叉树可能的形状是( ) BA.树中没有度为2的结点B.树中只有一个根结点C.树中非叶结点均只有左子树D.树中非叶结点均只有右子树8.若根结点的层数为1,则具有n个结点的二叉树的最大高度是( ) AA.nB.C. +1D.n/29.在图G中求两个结点之间的最短路径可以采用的算法是( )A P123A.迪杰斯特拉(Dijkstra)算法B.克鲁斯卡尔(Kruskal)算法C.普里姆(Prim)算法D.广度优先遍历(BFS)算法10.下图G=(V,E)是一个带权连通图,G 的最小生成树的权为( )D P116 A.15 B.16 C.17 D.1811.在下图中,从顶点1出发进行深度优先遍历可得到的序列是( ) B P108 A.1 2 3 4 5 6 7B.1 4 2 6 3 7 5C.1 4 2 5 3 6 7D.1 2 4 6 5 3 712.如果在排序过程中不改变关键字相同元素的相对位置,则认为该排序方法是( ) B P136 A.不稳定的 B.稳定的 C.基于交换的D.基于选择的13.设有一组关键字(19, 14, 23, 1,6,20, 4,27, 5,11, 10, 9),用散列函数H(key)=key%13构造散列表,用拉链法解决冲突,散列地址为1的链中记录个数为( ) C P198 A.1 B.2 C.3D.414.已知二叉树结点关键字类型为字符,下列二叉树中符合二叉排序树性质的是( ) D P17415.若需高效地查询多关键字文件,可以采用的文件组织方式为( ) D P218A.顺序文件B.索引文件C.散列文件D.倒排文件二、填空题(本大题共10小题,每小题2分,共20分)请每小题的空格中填上正确答案。
02331 - 2016年04月 - 数据结构试题及答案
2016年4月高等教育自学考试全国统一命题考试数据结构试卷(课程代码02331)注意事项:1.本试卷分为两部分,第一部分为选择题,第二部分为非选择题。
2.应考者必须按试题顺序在答题卡(纸)指定位置上作答,答在试卷上无效。
3.涂写部分、画图部分必须使用2B铅笔书写部分必须使用黑色字迹签字笔。
第一部分选择题一、单项选择题(本大题共15小题,每小题2分,共30分)1.下列选项中,属于非线性数据结构的是()A.队列B.栈C.二叉排序树D.线性表2.瑞士计算机科学家沃思教授曾指出:算法+数据结构=程序.这里的数据结构指的是()A.数据的逻辑结构和存储结构B.数据的线性结构和非线性结构C.数据的紧凑结构和非紧凑结构D.数据的顺序结构和链式结构3.线性表顺序存储时,逻辑上相邻的两个数据元素,其存储地址()A.一定相邻B.一定不相邻C.不一定相邻D.可能不相邻4.数据元素1,2,3,4,5依次入栈,则不可能得到的出栈序列是()A.4,5,3,2,1 B.1,2,3,4,5C.4,3,5,1,2 D.5,4,3,2,15.设顺序表首元素A[0]的存储地址是4000,每个数据元素占5个存储单元,则元素A[20]的起始存储地址是()A.4005 B.4020 C.4100 D.41056.广义表 A=(a,(b,c,(e,f))),函数 head(head(tail(A)))的运算结果是()A.a B.b C.c D.e7.设高度为h的二叉树中,只有度为0和2的结点,则此类二叉树包含的结点数至少是()A.2h B.2h-1 C.2h+1 D.h+18.—棵非空二叉树T的前序遍历和后序遍历序列正好相反,则T一定满足()A.所有结点均无左孩子B.所有结点均无右孩子C.只有一个叶子结点D.是一棵满二叉树9.设图的邻接矩阵A如下所示。
各顶点的度依次是()A.1,2,1,2 B.2,2,1,1 C.3,4,2,3 D.4,4,2,21O.无向图G如题10图所示,从顶点a开始进行深度优先遍历,下列遍历序列中,正确的是()A.a,b,e,c,d,f B.a,c,f,e,d,bC.a,c,b,e,f,d D.a,e,d,f,c,b11.设带权连通图G中含有n(n>1)个顶点,下列关于G的最小生成树T的叙述中,正确的是()A.T中可能含有回路B.T中含有图G的所有边C.T是唯一的,且含有n-1条边D.T可能不唯一,但权一定相等12.若要求对序列进行稳定的排序,则在下列选项中应选择()A.希尔排序B.快速排序C.直接插入排序D.直接选择排序13.下列排序算法中,空间复杂度最差的是()A.归并排序B.希尔排序C.冒泡排序D.堆排序14.下列排序算法中,初始数据有序时,花费的时间反而更多的算法是()A.插入排序B.冒泡排序C.快速排序D.希尔排序15.对线性表L进行二分查找时,要求L必须满足()A.以顺序方式存储B.以顺序方式存储,且数据元素有序C.以链接方式存储D.以链接方式存储,且数据元素有序第二部分非选择题二、填空题(本大题共10小题,每小题2分,共20分)16.下面程序段的时间复杂度是_________。
023310903数据结构
数据结构(02331)一、选择题1.具有100个结点的二叉树中,若用二叉链表存储,其部分指针域用来指向结点的左、右孩子,其余_______个指针域为空。
【】A.50 B.99 C.100 D.1012.下面关于图的存储的叙述中,哪一个是正确的【】A.用邻接矩阵法存储图,占用的存储空间数只与图中结点个数有关,与边数无关B.用邻接矩阵法存储图,占用的存储空间数只与图中边数有关,与结点个数无关C.用邻接表存储图,占用的存储空间数只与图中结点个数有关,与边数无关D.用邻接表存储图,占用的存储空间数只与图中边数有关,与结点个数无关3.设某一无向图有6个结点,该图至少应有_______条边才能确保该图是一个连通图。
【】A、5B、6C、7D、84.有4个顶点的无向完全图的边数为【】A.4 B.6 C.12 D.165.设二叉排序树中关键字由1至1000的整数构成,现要查找关键字为363的结点,下述关键字序列哪一个不可能是在二叉排序树上查找到的序列?【】A.2,252,401,398,330,344,397,363B.924,220,911,244,898,258,362,363C.925,202,911,240,912,245,363D.2,399,387,219,266,382,381,278,3636.在算法性能分析中,通常所说的时间复杂度指【】A.语句的频度和B.最坏时间复杂度C.渐近时间复杂度D.算法的时间消耗7.数据的四种基本逻辑结构是指【】A.数组、链表、树、图形结构B.线性表、链表、栈队列、数组广义表C.线性结构、链表、树、图形结构D.集合、线性结构、树、图形结构8.从一个长度为n的顺序表中删除第i个元素(1≤i≤n)时,需向前移动的元素的个数是【】A.n-i B.n-i+1 C.n-i-1 D.i9.在一个单链表中,若p所指结点不是最后结点,则删除p所指结点的后继结点的正确操作【】A.p=p->next B.p->next=p->next C.p->next=p->next->next D.p->next=p10.假设left和right为双向链表中指向直接前趋结点和直接后继结点的指针域,现要把一个指针s所指的新结点作为非空双链表中q所指地点(中间结点)的直接后继结点插入到该双向链表中,则下列算法段能正确完成上述要求的是【】A.q->right=s; s->left=q; q->right->left=s; s->right=q->right;B.s->left=q; s->right=q->right; q->right->left=s; q->right=s;C.s->left=q; q->right=s; q->right->left=s; s->right=q->right;D.以上都不对11.______是数据的基本单位【】A.数据结构B.数据元素 C.数据项D.数据类型12.数据结构中,通常采用两种方法衡量算法的时间复杂性,即【】A.最大时间复杂性和最小时间复杂性B.最好时间复杂性和最坏时间复杂性C.部分时间复杂性和总体时间复杂性D.平均时间复杂性和最坏时间复杂性13.下列关于线性表的叙述中,不正确的是【】A.线性表是n个结点的有穷序列B.线性表可以为空表C.线性表的每一个结点有且仅有一个前趋和一个后继D.线性表结点间的逻辑关系是1:1的联系14.假设left和right为双向链表中指向直接前趋结点和直接后继结点的指针域,现要把一个指针s所指的新结点,插入到一个非空双向链表中,s结点作为q所指结点(中间结点)的直接后继结点,则下列算法段能正确完成上述要求的是【】A.q->right=s; s->left=q; q->right->left=s; s->right=q->right;B.s->left=q; s->right=q->right; q->right->left=s; q->right=s;C.s->left=q; q->right=s; q->right->left=s; s->right=q->right;D.以上都不对15.设一个栈的输入序列是a,b,c,d,则所得到的输出序列(输入过程中允许出栈)不可能出现的是【】A.a,b,c,d B.a,b,d,c C.d,c,b,a D.c,d,a,b 16.在具有m个单元的循环队列中,front指示队头元素的前一个位置,rear指示队尾元素的当前位置,则队满的条件是【】A.front==rear B.(front+1)%m==rear C.rear+1==front D.(rear+1)%m==front 17.设串s1='ABCDEFG',s2='PQRST',函数con(x,y)返回x和y串的连接串,subs(s,I,j)返回串s 的从序号i的字符开始连续j个字符组成的子串,len(s)返回串s的长度,则con(subs(s1,2,len(s2)),subs(s1,len(s2),2)))的结果串是【】A.BCDEFEF B.BCDEFG C.BCPQRST D.BCDEF 18.设矩阵A是一个对称矩阵,为了节省空间,将其下三角部分按行优先存放在一维数组B中,A[0][0]存放在B[0]中,则对下三角矩阵中任一元素a ij(i>=j),在一维数组B中下标K的值是【】A.i(i-1)/2+j-1 B.i(i+1)/2+j C.i(i+1)/2+j-1 D.i(i-1)/2+j1 9.高度为h的完全二叉树中,结点数最多为【】A.2h-1 B.2h+1 C.2h-1 D.2h20.按二叉树的定义,具有3个结点的二叉树有_______种【】A.3 B.4 C.5 D.621.以下说法正确的是【】A.数据元素是数据的最小单位B.数据项是数据的基本单位C.数据结构是带有结构的各数据项的集合D.数据元素之间的逻辑关系称为数据的逻辑结构22.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素算法的时间复杂度为【】A.O(log2n) B.O(1) C.O(n) D.O(n2)23.算法分析的两个主要方面是【】A.空间复杂性和时间复杂性B.正确性和简明性C.可读性和文档性D.时间复杂性和程序复杂性24.设栈的输入序列为1、2、3、4,则不可能是其出栈序列【】A.1243 B.2134 C.1432 D.431225.若用一个大小为6的数组来实现循环队列,且当rear和front的值分别为0和3。
全国1月高等教育自学考试数据结构试题及答案解析
全国2018年1月高等教育自学考试数据结构试题课程代码:02331一、单项选择题(本大题共15小题,每小题2分,共30分。
在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内)1.下面程序段的时间复杂度是( )for(i=0;i<n;i++)for(j=1;j<m;j++)A[i][j]=0;A.O(n)B.O(m+n+1)C.O(m+n)D.O(m*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.在头指针为head且表长大于1的单循环链表中,指针p指向表中某个结点,若p->next->next=head,则( )A.p指向头结点B.p指向尾结点C.*p的直接后继是头结点D.*P的直接后继是尾结点4.判定“带头结点的链队列为空”的条件是( )A.Q.front==NULLB.Q.rear==NULLC.Q.front==Q.rearD.Q.front!=Q.rear5.设有两个串T和P,求P在T中首次出现的位置的串运算称作( )A.联接B.求子串C.字符定位D.子串定位6.广义表A=(a,(b),(),(c,d,e))的长度为( )A.4B.5C.6D.77.一棵含18个结点的二叉树的高度至少为( )A.3B.4C.5D.68.已知二叉树的先序序列为ABDECF,中序序列为DBEAFC,则后序序列为( )A.DEBAFCB.DEFBCAC.DEBCFAD.DEBFCA9.无向图中一个顶点的度是指图中( )A.通过该顶点的简单路径数B.与该顶点相邻接的顶点数C.通过该顶点的回路数D.与该顶点连通的顶点数10.已知一个图如下所示,从顶点a出发进行广度优先遍历可能得到的序列为( )A.a c e f b dB.a c b d f eC.a c b d e fD.a c d b f e11.在下列排序方法中,平均时间性能为O(nlogn)且空间性能最好的是( )A.快速排序B.堆排序C.归并排序D.基数排序12.已知一组关键字为{25,48,36,72,79,82,23,40,16,35},其中每相邻两个为有序子序列。
2010年至2013年数据结构答案02331.jpg资料
全国2010年1月高等教育自学考试数据结构试题及参考答案课程代码:02331一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.若一个算法的时间复杂度用T(n)表示,其中n的含义是( A )A.问题规模B.语句条数C.循环层数D.函数数量2.具有线性结构的数据结构是( C )A.树B.图C.栈和队列D.广义表3.将长度为n的单链表连接在长度为m的单链表之后,其算法的时间复杂度为( B )A.O(1) B.O(m)C.O(n) D.O(m+n)4.在带头结点的双向循环链表中插入一个新结点,需要修改的指针域数量是( C )A.2个B.3个C.4个D.6个5.假设以数组A[60]存放循环队列的元素,其头指针是front=47,当前队列有50个元素,则队列的尾指针值为( B )A.3 B.37C.50 D.976.若栈采用链式存储结构,则下列说法中正确的是( B )A.需要判断栈满且需要判断栈空B.不需要判断栈满但需要判断栈空C.需要判断栈满但不需要判断栈空D.不需要判断栈满也不需要判断栈空7.若串str=”Software”,其子串的数目是( D )A.8 B.9C.36 D.378.设有一个10阶的下三角矩阵A,采用行优先压缩存储方式,a ll为第一个元素,其存储地址为1000,每个元素占一个地址单元,则a85的地址为( C )A.1012 B.1017C.1032 D.10399.允许结点共享的广义表称为( D )A.纯表B.线性表C.递归表D.再入表10.下列数据结构中,不属于二叉树的是( A )A.B树B.AVL树C.二叉排序树D.哈夫曼树11.对下面有向图给出了四种可能的拓扑序列,其中错误..的是( C )A.1,5,2,6,3,4 B.1,5,6,2,3,4C.5,1,6,3,4,2 D.5,1,2,6,4,312.以v1为起始结点对下图进行深度优先遍历,正确的遍历序列是( D )A.v1,v2,v3,v4,v5,v6,v7 B.v1,v2,v5,v4,v3,v7,v6C.v1,v2,v3,v4,v7,v5,v6 D.v1,v2,v5,v6,v7,v3,v413.下列排序算法中不稳定的是( A )A.快速排序B.归并排序C.冒泡排序D.直接插入排序14.一个有序表为(1,3,9,12,32,41,45,62,75,77,82,95,100),当采用折半查找方法查找值32时,查找成功需要的比较次数是( B )A.2 B.3C.4 D.815.采用ISAM组织文件的方式属于( D )A.链组织B.顺序组织C.散列组织D.索引组织二、填空题(本大题共10小题,每小题2分,共20分)请在每小题的空格中填上正确答案。
全国自学考试数据结构试题02331试题及答案
全国2011年1月自学考试数据结构试题课程代码:02331一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.下列选项中与数据存储结构无关的术语是( D )P3A.顺序表B.链表C.链队列D.栈2.将两个各有n个元素的有序表归并成一个有序表,最少的比较次数是( B )A.n-1B.nC.2n-1D.2n3.已知循环队列的存储空间大小为m,队头指针front指向队头元素,队尾指针rear指向队尾元素的下一个位置,则向队列中插入新元素时,修改指针的操作是( D )A.rear=(rear-1)%m;B.front=(front+1)%m;C.front=(front-1)%m;D.rear=(rear+1)%m;4.递归实现或函数调用时,处理参数及返回地址,应采用的数据结构是( A )A.堆栈B.多维数组C.队列D.线性表5.设有两个串p和q,其中q是p的子串,则求q在p中首次出现位置的算法称为( C )A.求子串B.串联接C.串匹配D.求串长6.对于广义表A,若head(A)等于tail(A),则表A为( B )P67A.( )B.(( ))C.(( ),( ))D.(( ),( ),( ))7.若一棵具有n(n>0)个结点的二叉树的先序序列与后序序列正好相反,则该二叉树一定是( C )A.结点均无左孩子的二叉树B.结点均无右孩子的二叉树C.高度为n的二叉树D.存在度为2的结点的二叉树8.若一棵二叉树中度为l的结点个数是3,度为2的结点个数是4,则该二叉树叶子结点的个数是( B )P73A.4B.5C.7D.89.下列叙述中错误的是( C )A.图的遍历是从给定的源点出发对每一个顶点访问且仅访问一次P107B.图的遍历可以采用深度优先遍历和广度优先遍历第 1 页C.图的广度优先遍历只适用于无向图D.图的深度优先遍历是一个递归过程10.已知有向图G=(V,E),其中V={V1,V2,V3,V4},E={<V1,V2>,<V1,V3>,<V2,V3>,<V2,V4>,<V3,V4>},图G的拓扑序列是()A.V1,V2,V3,V4B.V1,V3,V2,V4C.V1,V3,V4,V2D.V1,V2,V4,V311.平均时间复杂度为O(n log n)的稳定排序算法是( C )P136 P164 8-2A.快速排序B.堆排序C.归并排序D.冒泡排序12.已知关键字序列为(51,22,83,46,75,18,68,30),对其进行快速排序,第一趟划分完成后的关键字序列是( D )A.(18,22,30,46,51,68,75,83)B.(30,18,22,46,51,75,83,68)C.(46,30,22,18,51,75,68,83)D.(30,22,18,46,51,75,68,83)13.某索引顺序表共有元素395个,平均分成5块。
2018年4月高等教育自学考试《数据结构》试题02331
2018年4月高等教育自学考试《数据结构》试题课程代码:02331一、单项选择题1.数据结构不包含的内容是A.数据的元素来源B.数据的逻辑结构C.数据的存储结构D.对数据施加的操作2.下列选项中,属于逻辑结构的是A.循环队列B.二叉树C.散列表D.邻接表3.下列选项中,属于顺序存储结构优点的是A.插入运算方便B.删除运算方便C.存储密度大D.方便存储各种逻辑结构4.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则下列存储结构中,最节省运算时间的是A.单链表B.仅有头指针的单循环链表C.双向链表D.仅有尾指针的单循环链表5.用不带头结点的单链表存储队列,在进行删除运算时A.仅修改头指针B.仅修改尾指针C.头、尾指针一定都要修改D.头、尾指针可能都要修改6.二维数组M,行下标取值范围为0—8,列下标取值范围为1~10,若按行优先存储时,元素M[8Ⅱ51的存储地址为ar,则按列优先存储时,地址ar存储的数组元素应是A.M[8][5] B.M[5][8] C.M[3][10] D.M[0][9]7.根据二叉树的定义,3个结点构成的二叉树的树型有A.2种B.3种C.4种D.5种8.一棵有序树可转换为一棵二叉树,树的后序遍历对应二叉树的A.前序遍历B.中序遍历C.后序遍历D.以上都不对9.若图G的邻接表中有奇数个表结点,则G是A.含奇数个顶点的图B.无向图C.含偶数个顶点的图D.有向图10.若用邻接矩阵存储有向图,矩阵中主对角线以下的元素均为零,则关于该图拓扑排序序列的结论是A.存在,且唯一B.存在,且不唯一C.存在,可能不唯一D.无法确定是否存在11.如果无向图G的最小生成树T中含有边(a,b)和(a,c),则下列选项中,一定不在T 中的边是A.(b,c) B.(b,d) C.(c,d) D.(c,e)12.下列排序算法中,在每一趟都能选出一个元素放到其最终位置上的是A.插入排序B.希尔排序C.归并排序D.堆排序13.若数据元素序列11,13,15,7,8,9,23,2,5是采用下列排序方法之一得到的第二趟排序后的结果,则该排序算法是A.冒泡排序B.插入排序C.选择排序D.归并排序14.线性表采用顺序存储或链式存储,对其进行查找的方法应是A.顺序查找B.二分查找C.散列查找D.索引查找15.设有序表为{1,3,9,12,32,41,45,62,75,77,82},采用二分查找法查找关键字75,查找过程中关键字之间的比较次数是A.1 B.2 C.3 D.4二、填空题16.在数据结构中,从逻辑上可以把数据结构分为线性结构和。
02331数据结构答案
2017年10月高等教育自学考试全国统命题考试数据结构试题答案及评分参考(课程代码02331)一、单项选择题:本大题共I 5小题,每小题2分,共30分。
1.B2.C3.B4.B5.C6.A7.B8.A9.A 10.C ll.D 12.B 13.B 14.D 15.C二、填空题:本大题其1 0小题,每小题2分.共20分。
16.无关(或不同) 17.q->next=p->next18.递归函数 19.((b ,c,d), e f,(g ,h)20.不变 21.有向无环图22.兄弟 23.)(2n O24.装填因子 25.37/12,约为3.08三、解答题:本犬题共4小题,每小题5分,共20分。
【评分说明】本题答案不唯一。
若考生给出的答案正确,同样给分27.(1) ABCEGDF ACEGBDF ADFGBCE (3分)(2) ABCDEFG ADCBFEG (2分)【评分说明】本题答案不唯一。
若考生给出的答案正确,同样给分。
28.(1)12,11,10, 01, 19, 14. 23, 27, 55, 20, 84, 79, 68 (3分)(2)4 ,2,1(2分)【评分说明】增量序列答案不唯一。
若考生给出的增量序列是递减序列,且最后一个增量是1.同样给分。
29.(1)agebfde (或其他等价答案) (4分)(2)4个 (1分)四、算法阅读题:本大题共4小题,每小题5分,共202分。
30.(1)SL1->data中的数据是{25,4,256,15,29,47,128,256,64},SL2->data 中的数据是{22,4,-63,9,-38,34.42,3}(4分)(2)该算法比较两十线性表中相同下标位置的两个元素,较大者放到较长的线性表中,较小者放到较短的线性表中。
(1分)31.(1) ACCABB (3分)(2) O(n),其中n是二叉树中所含结点个数。
(2分)32(1)j>i,j-- (2分)(2)j=1+1;j<n-i-l (2分)(3)i++ (1分)33.(1) 15 16 18 20 30 40 (3分)(2)查找二叉排序树T中所有满足kl≤key≤k2的元素,井按升序输出。
02331数据结构课后练习题
第1章概论练习题一、单项选择题1.在数据结构中,从逻辑上可以把数据结构分为(B)A.紧凑结构与非紧凑结构B.线性结构与非线性结构C.内部结构与外部结构D.动态结构与静态结构2.若结点得存储地址与其关键字之间存在某种映射关系,则称这种存储结构为(D)A.顺序存储结构B.链式存储结构C.索引存储结构D.散列存储结构3.算法分析得两个主要方面就是(B)A.正确性与简明性B.时间复杂性与空间复杂性C.可读性与可维护性D.数据复杂性与程序复杂性4.线性表采用链式存储结构时,要求内存中可用存储单元地址(A)A.不一定连续得B.部分地址必须就是连续得C.必须就是连续得D.一定就是不连续得5.算法指得就是(C)A.计算机程序B.解决问题得计算方法C.解决问题得有限运算序列D.排序算法二、填空题6.数据结构一般包括逻辑结构、存储结构与数据运算三个方面得内容.7.数据得逻辑结构可分为线性结构、非线性结构两大类.8.数据得存储结构(物理结构)一般可以用顺序存储结构、链式存储结构、索引存储结构及散列存储结构等四种存储方法表示.9.在选用求解一个问题得算法时,除了首先考虑算法就是“正确得”之外,还主要考虑执行算法所需要得时间、执行算法所需要得存储空间及算法应易于理解、易于编程、易于调试等三点。
10.设有一批数据元素,为了最快地存取某元素,宜用顺序结构存储,为了方便得插入一个元素,宜用链式结构存储.三、应用题设n为正整数,利用大“O”记号,写出下列各程序段得时间复杂度.11.for (i = 1; i <= n; i++){y = y + 1;for (j = 1; j <= 2 * n; j++)x = x + 1;}分析:语句“y = y + 1;”执行n次,语句“x = x + 1;”各执行次,故该程序段得时间复杂度为O().12.s = 0;while (n >= (s + 1) * (s + 1))s = s + 1;分析:语句“s = s + 1;”执行次,故该程序段得时间复杂度为O().13.x = 1;sum = 0;for (i = 0; i <= n; i++){x = x * i;sum = sum + x;}分析:语句“x = x * i”与“sum = sum + x;”各执行n次,故该程序段得时间复杂度为O(n).14.for (i = 1; i <= n; i++)if (3 * i <=n)for (j = 3 * i; j <= n; j++){x++;y = 3 * x + 2;}分析:语句“x++”与“y = 3 * x + 2;”各执行次,故该程序段得时间复杂度为O().15.for (i = 1; i <= n; i++)for (j = 1; j <= i; j++){x = x + 1;}分析:语句“x = x + 1;”执行次,故该程序段得时间复杂度为O().16.sum = 0; i = 0;while (i <= 100){sum = sum + i;i++;}分析:语句“sum = sum + i;”与“i++;”各执行100次,故该程序段得时间复杂度为O(1).17.x = 1;s = 0;for (i = 1; i <= n; i++){++x;s += x;}for (j = 1; j <= n; j++)for (k = 1; k <= n; k++){x++;s = s + x;}分析:语句“++x;”执行n次,语句“x++;”与“s = s + x;”各执行次,故该程序段得时间复杂度为O().第2章线性表练习题一、单项选择题1.在长度为n得顺序表得第i个位置上插入一个元素,元素得移动次数为(A)A. B. C. D.2.若一个顺序表中第一个元素得存储地址为1000,每个元素占4个地址单元,那么,第6个元素得存储地址应就是(A)A.1020B.1010C.1016D.10243.带头结点得单链表(以head为头指针)为空得判断条件就是(C)A.head != NULLB.head -> next == headC.head -> next == NULLD.head == NULL4.在单循环链表中,p指向表任一结点,判断表不就是访问结束得条件就是(B)A.p != NULLB.p != headC.p -> next != headD.p -> next != NULL5.在一个单链表中,已知q指向p所指向结点得前趋结点,若在p、q所指结点之间插入一个s所指向得新结点,则执行得操作就是(A)A.q -> next = s; s -> next = pB.p -> next = s; s -> next = qC.s -> next = p -> next; p -> next = sD.p -> next = s -> next; s -> next = p6.在一个单链表中,若删除p指向结点得后继结点,则执行得操作就是(A)A.q = p -> next; p -> next = p -> next -> next; free(q);B.p = p -> next; q = p -> next; p = q -> next; free(q);C.q = p -> next -> next; p = p -> next; free(q);D.p = p -> next -> next; q = p -> next; free(q);二、填空题7.在一个长度为n得顺序表中删除第i个元素,需要向前移动n- i个元素.8.在顺序表中插入或删除一个元素,需要平均移动表长得一半个元素,具体移动得元素个数与插入或删除得位置有关.9.顺序表中逻辑上相邻得元素在物理存储位置上一定相邻,链表结构中逻辑上相邻得元素在物理位置上不一定相邻.10.已知顺序表中一个元素得存储位置就是x,每个元素占c个字节,求其后继元素位置计算公式为x+ c,而已知单链表中某一结点由p指向,求此后继结点存储地址得操作为p -> next.11.在用p指针访问单链表时,判断不就是访问结束得条件就是p != NULL;在访问单循环链表时,判断不就是访问表结束得条件就是p != head.12.已知p指向双向链表得中间某个结点,从给定得操作语句中选择合适得填空.(1)在p结点后插入s结点得语句序列就是I、G、A、D.(2)在p结点前插入s结点得语句序列就是C、N、H、B.(3)删除p结点得直接后继结点得语句序列就是J、Q、E、M.(4)删除p结点得直接前趋结点得语句序列就是K、P、F、M.(5)删除p结点得语句序列就是O、R、L.A.p -> next = sB.p -> prior = sC.s -> next = pD.s -> prior = pE.p -> next = p -> next -> nextF.p -> prior = p -> prior -> priorG.p -> next -> prior = s H.p -> prior -> next = s I.s -> next = p -> nextJ.q = p -> next K.q = p -> prior L.free(p)M.free(q) N.s -> prior = p -> prior O.p -> prior -> next = p -> nextP.p -> prior -> prior -> next = p Q.p -> next -> next -> prior = p R.p -> next -> prior = p -> prior13.下面就是一个在带头结点得单链表head中删除所有数据域值为x得结点得算法,但不完善,请在相应得地方填上适当得语句,使之成为完整得算法.void DeleX(LinkList head, DataType x){LinkNode *p, *q, *s;P = head;q = p -> next;while (q != NULL)if (q -> data == x){s = q;q = q -> next;free(s);p -> next = q;}else{p = q;q = q -> next;}}三、算法设计题14.设有两个顺序表A与B,且都递增有序。
2018年10月高等教育自学考试《数据结构》试题02331
2018年10月高等教育自学考试《数据结构》试题课程代码:02331一、单项选择题1.下列数据结构中,逻辑结构不同的是A.线性表B.栈C.队列D.二叉树2.将16个数据元素的线性表按顺序存储方式存储在数组中,若第一个元素的存储地址是1000,第6个元素的存储地址是1040,则最后一个元素的存储地址是A.1112 B.1120 C.1124 D.11283.设栈的初始状态为空,元素1,2,3,4,5依次入栈,不能得到的出栈序列是A.1,2,3,4,5 B.4,5,3,2,1C.1,2,5,4,3 D.1,2,5,3,44.设指针变量p指向非空单链表中的结点,next是结点的指针域,则判断p所指结点为尾结点前一个结点的逻辑表达式中,正确的是A.p->next!=NULL&&p->next->next->next==NNULLB.p->next!=NULL&&p->next->next==NULLC.p->next->next==NULLD.p->next==NULL5.已知广义表LS=(((a,b,c),d),(e,(f,8),(h,i))),LS的深度是A.2 B.3 C.4 D.56.己知一棵完全二叉树T的第5层上共有5个叶结点,则T中叶结点个数最少是A.5 B.8 C.10 D.277.已知二叉树T的前序遍历序列为a,b,c,e,d,中序遍历序列为c,e,b,d,a,则T 的后序遍历序列为A.c,e,d,b,a B.d,e,c,b,a C.e,c,d,b,a D.e,c,b,a,d 8.有向图G有n个顶点和e条边,G保存在邻接矩阵M中,M中0与1的个数差是A.n(n+1)/2-e B.n(n+1)/2-2e C.n×n-e D.n×n-2e 9.有向图G中所有顶点的度数之和是24,则G中弧的数量是A.10 B.12 C.14 D.1610.设有向图G含有/1个顶点、e条边,使用邻接表存储,对G进行深度优先搜索遍历算法的时间复杂度是A.O(n) B.O(e) C.O(n+e) D.O(n×e)11.对数据序列(26,14,17,12,7,4,3)采用二路归并排序进行升序排序,两趟排序后,得到的排序结果为A.14,26,17,12,4,7,3 B.12,14,17,26,3,4,7C.14,26,12,17,3,4,7 D.14,26,12,17,3,7,412.下列选项中,不稳定的排序方法是A.希尔排序B.归并排序C.直接插入排序D.冒泡排序13.一组记录的关键字为(35,48,47,23,44,88),利用堆排序算法进行降序排序,建立的初始堆为A.23,35,48,47,44,88 B.23,35,47,48,44,88C.35,23,47,48,44,88 D.35,23,47,44,48,8814.一棵二叉排序树中,关键字n所在结点是关键字m所在结点的孩子,则A.n一定大于m B.n一定小于mC.n一定等于m D.n与m的大小关系不确定15.设散列表长m=16,散列函数H(key)=key%15。
2018年10月高等教育自学考试《数据结构》试题02331
2018年10月高等教育自学考试《数据结构》试题课程代码:02331一、单项选择题1.下列数据结构中,逻辑结构不同的是A.线性表B.栈C.队列D.二叉树2.将16个数据元素的线性表按顺序存储方式存储在数组中,若第一个元素的存储地址是1000,第6个元素的存储地址是1040,则最后一个元素的存储地址是A.1112 B.1120 C.1124 D.11283.设栈的初始状态为空,元素1,2,3,4,5依次入栈,不能得到的出栈序列是A.1,2,3,4,5 B.4,5,3,2,1C.1,2,5,4,3 D.1,2,5,3,44.设指针变量p指向非空单链表中的结点,next是结点的指针域,则判断p所指结点为尾结点前一个结点的逻辑表达式中,正确的是A.p->next!=NULL&&p->next->next->next==NNULLB.p->next!=NULL&&p->next->next==NULLC.p->next->next==NULLD.p->next==NULL5.已知广义表LS=(((a,b,c),d),(e,(f,8),(h,i))),LS的深度是A.2 B.3 C.4 D.56.己知一棵完全二叉树T的第5层上共有5个叶结点,则T中叶结点个数最少是A.5 B.8 C.10 D.277.已知二叉树T的前序遍历序列为a,b,c,e,d,中序遍历序列为c,e,b,d,a,则T 的后序遍历序列为A.c,e,d,b,a B.d,e,c,b,a C.e,c,d,b,a D.e,c,b,a,d 8.有向图G有n个顶点和e条边,G保存在邻接矩阵M中,M中0与1的个数差是A.n(n+1)/2-e B.n(n+1)/2-2e C.n×n-e D.n×n-2e 9.有向图G中所有顶点的度数之和是24,则G中弧的数量是A.10 B.12 C.14 D.1610.设有向图G含有/1个顶点、e条边,使用邻接表存储,对G进行深度优先搜索遍历算法的时间复杂度是A.O(n) B.O(e) C.O(n+e) D.O(n×e)11.对数据序列(26,14,17,12,7,4,3)采用二路归并排序进行升序排序,两趟排序后,得到的排序结果为A.14,26,17,12,4,7,3 B.12,14,17,26,3,4,7C.14,26,12,17,3,4,7 D.14,26,12,17,3,7,412.下列选项中,不稳定的排序方法是A.希尔排序B.归并排序C.直接插入排序D.冒泡排序13.一组记录的关键字为(35,48,47,23,44,88),利用堆排序算法进行降序排序,建立的初始堆为A.23,35,48,47,44,88 B.23,35,47,48,44,88C.35,23,47,48,44,88 D.35,23,47,44,48,8814.一棵二叉排序树中,关键字n所在结点是关键字m所在结点的孩子,则A.n一定大于m B.n一定小于mC.n一定等于m D.n与m的大小关系不确定15.设散列表长m=16,散列函数H(key)=key%15。
02331 数据结构 答案
绝密★启用前2018年4月高等教育自学考试全国统一命题考试数据结构试题答案(课程代码02331)一、单项选择题:本大题共15小题,每小题2分,共30分。
1.A 2.B 3.C 4.D 5.D6.C 7.D 8.B 9.D 10.C11.A 12.D 13.B 14.A 15.B二、填空题:本大题共10小题,每小题2分,共20分。
16.非线性结构17.头结点18. 320 19.(( ))20.2h-1 21.生成树22. 16 23.长度24. 32,36,l8,13,36,45,76,97,49,53 25.基数排序三、解答题:本大题共4小题,每小题5分,共20分。
26.答案:(1)判断栈满int stackfull( SeqStack *s){ return s->topl+1 == s->top2;}(2)进栈void push(SeqStack*s, int si, DataTypex){ if ( stackfull( s))printf( "satck overflow");else{ if (si==0)s->data[ ++s->topl] = x;else s->data[ --s->top2] = x;}}27.答案:①C ②H ③D ④E ⑤H ⑥D ⑦B ⑧E ⑨G ⑩A28.答案:(1)是有向无环图。
(2)该图的拓扑排序序列有:(1,2,5,4,7,3,6)和(1,2,5,4,3,7,6)29.答案:(1)散列表是(2) ASL查找成功=12/8 =1.5四、算法阅读题:本大题共4小题,每小题5分,共20分。
30.答案:(1) Q->rear==Q->front(2) (Q->rear+l)%QueueSize(3) (Q->front+l)%QueueSize31.答案(1)*a(2)k ++(3) k32.答案:输出结果:7,3,9,6,1,5,2,8,433.答案:输出结果:62,32,21,23,25,5,10,1,20,9五、算法设计题:本题10分。
数据结构02331历年试题0701-1110!10
全国2007年1月高等教育自学考试数据结构试题课程代码:02331一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.抽象数据类型的三个组成部分分别为()A.数据对象、数据关系和基本操作B.数据元素、逻辑结构和存储结构C.数据项、数据元素和数据类型D.数据元素、数据结构和数据类型2.若算法中语句的最大频度为T(n)=2006n+6nlogn+29log2n,则其时间复杂度为()A.O(logn) B.O(n)C.O(nlogn) D.O(log2n)3.若线性表的插入和删除操作频繁地在表头或表尾位置进行,则更适宜采用的存储结构为()A.无头结点的双向链表B.带尾指针的循环链表C.无头结点的单链表D.带头指针的循环链表4.上溢现象通常出现在()A.顺序栈的入栈操作过程中B.顺序栈的出栈操作过程中C.链栈的入栈操作过程中D.链栈的出栈操作过程中5.已知串s=″aabacbabcaccab″,串t1=″abc″,串t2=″cba″,函数index(s,t)的返回值为串t在串s中首次出现的位置,则能求得串″abcacba″的操作序列为()A.substr (s1,s,6,index(s,t1)); substr (s2,s,index(s,t1),1);strcat(s1,s2);B.substr (s1,s,7,index(s,t1)); substr (s2,s,index(s,t1),1);strcat(s2,s1);C.substr(s1,s,6,index(s,t2)); substr(s2,s,index(s,t2),3);strcat(s1,s2);D.substr(s1,s,6,index(s,t2)); substr(s2,s,index(s,t2),3);strcat(s2,s1);6.对广义表L=((a,b),((c,d),(e,f)))执行head(tail(head(tail(L))))操作的结果是()A.d B.eC.(e) D.(e,f )7.已知一棵完全二叉树有64个叶子结点,则该树可能达到的最大深度为()A.7 B.8C.9 D.108.若一棵二叉树有11个叶子结点,则该二叉树中度为2的结点个数是()A.10 B.11C.12 D.不确定的9.对于有向图,其邻接矩阵表示相比邻接表表示更易于进行的操作为()A.求一个顶点的邻接点B.求一个顶点的度C.深度优先遍历D.广度优先遍历10.若用邻接矩阵表示带权有向图,则顶点i的入度等于矩阵中()A.第i行非∞元素之和B.第i列非∞元素之和C.第i行非∞元素个数D.第i列非∞元素个数11.对关键字序列(5,1,4,3,7,2,8,6)进行快速排序时,以第一个元素5为基准的一次划分的结果为()A.(1,2,3,4,5,6,7,8)B.(1,4,3,2,5,7,8,6)C.(2,1,4,3,5,7,8,6)D.(8,7,6,5,4,3,2,1)12.下列二叉树中,不.平衡的二叉树是()13.下列序列中,不.构成堆的是()A.(1,2,5,3,4,6,7,8,9,10)B.(10,5,8,4,2,6,7,1,3)C.(10,9,8,7,3,5,4,6,2)D.(1,2,3,4,10,9,8,7,6,5)14.主关键字能唯一标识()A.一个记录B.一组记录C.一个类型D.一个文件15.稀疏索引是指在文件的索引表中()A.为每个字段设一个索引项B.为每个记录设一个索引项C.为每组字段设一个索引项D.为每组记录设一个索引项二、填空题(本大题共10小题,每小题2分,共20分)请在每小题的空格中填上正确答案。
最新全国自考数据结构(02331)试题及答案
最新全国自考数据结构(02331)试题及答案全国2012年10月高等教育自学考试数据结构试题课程代码:02331请考生按规定用笔将所有试题的答案涂、写在答题纸上。
选择题部分注意事项:1. 答题前,考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。
2. 每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑。
如需改动,用橡皮擦干净后,再选涂其他答案标号。
不能答在试题卷上。
一、单项选择题(本大题共l5小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸”的相应代码涂黑。
错涂、多涂或未涂均无分。
1.一个算法的时间耗费的数量级称为该算法的A.效率B.难度C.可实现性D.时间复杂度2.顺序表便于A.插入结点B.删除结点C.按值查找结点D.按序号查找结点3.设带头结点的单循环链表的头指针为head,指针变量P指向尾结点的条件是A.p->next->next==head B.p->next==headC.p->next->next==NULL D.p->next==NULL4.设以数组A[0..m-1]存放循环队列,front指向队头元素,rear 指向队尾元素的下一个位置,则当前队列中的元素个数为A.(rear-front+m)%m B.rear-front+1C.(front-rear+m)%m D.(rear-front)%m5.下列关于顺序栈的叙述中,正确的是A.入栈操作需要判断栈满,出栈操作需要判断栈空B.入栈操作不需要判断栈满,出栈操作需要判断栈空C.入栈操作需要判断栈满,出栈操作不需要判断栈空D.入栈操作不需要判断栈满,出栈操作不需要判断栈空6.A是一个10×10的对称矩阵,若采用行优先的下三角压缩存储,第一个元素a0,0的存储地址为1,每个元素占一个存储单元,则a7,5的地址为A.25 B.26C.33 D.347.树的后序遍历等价于该树对应二叉树的A.层次遍历B.前序遍历C.中序遍历D.后序遍历8.使用二叉线索树的目的是便于A.二叉树中结点的插入与删除B.在二叉树中查找双亲C.确定二叉树的高度D.查找一个结点的前趋和后继9.设无向图的顶点个数为n,则该图边的数目最多为A.n-l B.n(n-1)/2C.n(n+1)/2 D.n210.可进行拓扑排序的图只能是A.有向图B.无向图C.有向无环图D.无向连通图11.下列排序方法中稳定的是A.直接插入排序B.直接选择排序C.堆排序D.快速排序12.下列序列不为..堆的是A.75,45,65,30,15,25 B.75,65,45,30,25,15C.75,65,30,l5,25,45 D.75,45,65,25,30,1513.对线性表进行二分查找时,要求线性表必须是A.顺序存储B.链式存储C.顺序存储且按关键字有序D.链式存储且按关键字有序14.分别用以下序列生成二叉排序树,其中三个序列生成的二叉排序树是相同的,不同..的序列是A.(4,1,2,3,5) B.(4,2,3,l,5)C.(4,5,2,1,3) D.(4,2,1,5,3)15.下列关于m阶B树的叙述中,错误..的是A.每个结点至多有m个关键字B.每个结点至多有m棵子树C.插入关键字时,通过结点分裂使树高增加D.删除关键字时通过结点合并使树高降低非选择题部分注意事项:用黑色字迹的签字笔或钢笔将答案写在答题纸上,不能答在试题卷上。
自考数据结构02331历年试题及答案(2009--2015个人整理版)
自考数据结构02331历年试题及答案(2009--2015个人整理版)全国2009年1月自学考试数据结构试题一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.下列程序段的时间复杂度为( )9 s=0;for(i=1;i<n ;i++) for(j=1;j<n ;j++) s+=i*j ; A.O(1) B.O(n)C.O(2n)D.O(n 2)2.假设某个带头结点的单链表的头指针为head ,则判定该表为空表的条件是( )22 A.head==NULL ; B.head->next==NULL ; C.head!=NULL ; D.head->next==head ;3.栈是一种操作受限的线性结构,其操作的主要特征是( )32 A.先进先出 B.后进先出 C.进优于出 D.出优于进4.假设以数组A[n]存放循环队列的元素,其头、尾指针分别为front 和rear 。
若设定尾指针指向队列中的队尾元素,头指针指向队列中队头元素的前一个位置,则当前存于队列中的元素个数为( ) A.(rear-front-1)%n B.(rear-front)%n C.(front-rear+1)%n D.(rear-front+n)%n5.判断两个串大小的基本准则是( )52 A.两个串长度的大小 B.两个串中首字符的大小 C.两个串中大写字母的多少 D.对应的第一个不等字符的大小6.二维数组A[4][5]按行优先顺序存储,若每个元素占2个存储单元,且第一个元素A[0][0]的存储地址为1000,则数组元素A[3][2]的存储地址为( )60 A.1012 B.1017 C.1034 D.10367.高度为5的完全二叉树中含有的结点数至少为( )72 A.16 B.17 C.31 D.328.已知在一棵度为3的树中,度为2的结点数为4,度为3的结点数为3,则该树中的叶子结点数为( ) A.5 B.8 C.11 D.189.下列所示各图中是中序线索化二叉树的是( A)81A10.已知含6个顶点(v 0,v 1,v 2,v 3,v 4,v 5)的无向图的邻接矩阵如图所示,则从顶点v 0出发进行深度优先遍历可能得到的顶点访问序列为( )108 A.(v 0,v 1,v 2,v 5,v 4,v 3) B.(v 0,v 1,v 2,v 3,v 4,v 5) C.(v 0,v 1,v 5,v 2,v 3,v 4) D.(v 0,v 1,v 4,v 5,v 2,v 3)11.如图所示有向图的一个拓扑序列是( ) A.ABCDEF B.FCBEADC.FEDCBAD.DAEBCF12.下列关键字序列中,构成大根堆的是( ) A.5,8,1,3,9,6,2,7 B.9,8,1,7,5,6,2,33 C.9,8,6,3,5,l ,2,7 D.9,8,6,7,5,1,2,313.对长度为15的有序顺序表进行二分查找,在各记录的查找概率均相等的情况下,查找成功时所需进行的关键字比较次数的平均值为( )172A.1539B.1549 C.1551 D.1555 14.已知一个散列表如图所示,其散列函数为H(key)=key %11,采用二次探查法处理冲突,则下一个插入的关键字49的地址为( D )d 19715.数据库文件是由大量带有结构的( )206 A.记录组成的集合 B.字符组成的集合 C.数据项组成的集合 D.数据结构组成的集合二、填空题(本大题共10小题,每小题2分,共20分)请在每小题的空格中填上正确答案。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章概论练习题一、单项选择题1.在数据结构中,从逻辑上可以把数据结构分为(B)A.紧凑结构和非紧凑结构B.线性结构和非线性结构C.内部结构和外部结构D.动态结构和静态结构2.若结点的存储地址与其关键字之间存在某种映射关系,则称这种存储结构为(D)A.顺序存储结构B.链式存储结构C.索引存储结构D.散列存储结构3.算法分析的两个主要方面是(B)A.正确性和简明性B.时间复杂性和空间复杂性C.可读性和可维护性D.数据复杂性和程序复杂性4.线性表采用链式存储结构时,要求内存中可用存储单元地址(A)A.不一定连续的B.部分地址必须是连续的C.必须是连续的D.一定是不连续的5.算法指的是(C)A.计算机程序B.解决问题的计算方法C.解决问题的有限运算序列D.排序算法二、填空题6.数据结构一般包括逻辑结构、存储结构和数据运算三个方面的内容.7.数据的逻辑结构可分为线性结构、非线性结构两大类.8.数据的存储结构(物理结构)一般可以用顺序存储结构、链式存储结构、索引存储结构及散列存储结构等四种存储方法表示.9.在选用求解一个问题的算法时,除了首先考虑算法是“正确的”之外,还主要考虑执行算法所需要的时间、执行算法所需要的存储空间及算法应易于理解、易于编程、易于调试等三点。
10.设有一批数据元素,为了最快地存取某元素,宜用顺序结构存储,为了方便的插入一个元素,宜用链式结构存储.三、应用题设n为正整数,利用大“O”记号,写出下列各程序段的时间复杂度.11.for (i = 1; i <= n; i++){y = y + 1;for (j = 1; j <= 2 * n; j++)x = x + 1;}分析:语句“y = y + 1;”执行n次,语句“x = x + 1;”各执行22n次,故该程序段的时间复杂度为O(2n).12.s = 0;while (n >= (s + 1) * (s + 1))s = s + 1;分析:语句“s = s + 1;”执行.13.x = 1;sum = 0;for (i = 0; i <= n; i++){x = x * i;sum = sum + x;}分析:语句“x = x * i”和“sum = sum + x;”各执行n次,故该程序段的时间复杂度为O(n).14.for (i = 1; i <= n; i++)if (3 * i <=n)for (j = 3 * i; j <= n; j++){x++;y = 3 * x + 2;}分析:语句“x++”和“y = 3 * x + 2;”各执行1(1)n n-次,故该程序段的时间复杂度为O(2n).615.for (i = 1; i <= n; i++)for (j = 1; j <= i; j++){x = x + 1;}分析:语句“x = x + 1;”执行1(1)n n+次,故该程序段的时间复杂度为O(2n).216.sum = 0; i = 0;while (i <= 100){sum = sum + i;i++;}分析:语句“sum = sum + i;”和“i++;”各执行100次,故该程序段的时间复杂度为O(1).17.x = 1;s = 0;for (i = 1; i <= n; i++){++x;s += x;}for (j = 1; j <= n; j++)for (k = 1; k <= n; k++){x++;s = s + x;}分析:语句“++x;”执行n次,语句“x++;”和“s = s + x;”各执行2n次,故该程序段的时间复杂度为O(2n).第2章线性表练习题一、单项选择题1.在长度为n的顺序表的第i(11)≤≤+个位置上插入一个元素,元素的移动次数为(A)i nA.1i-n i-+B.n i-C.i D.1 2.若一个顺序表中第一个元素的存储地址为1000,每个元素占4个地址单元,那么,第6个元素的存储地址应是(A)A.1020 B.1010 C.1016 D.1024 3.带头结点的单链表(以head为头指针)为空的判断条件是(C)A.head != NULL B.head -> next == headC.head -> next == NULL D.head == NULL4.在单循环链表中,p指向表任一结点,判断表不是访问结束的条件是(B)A.p != NULL B.p != head C.p -> next != head D.p -> next != NULL 5.在一个单链表中,已知q指向p所指向结点的前趋结点,若在p、q所指结点之间插入一个s所指向的新结点,则执行的操作是(A)A.q -> next = s; s -> next = p B.p -> next = s; s -> next = qC.s -> next = p -> next; p -> next = s D.p -> next = s -> next; s -> next = p 6.在一个单链表中,若删除p指向结点的后继结点,则执行的操作是(A)A.q = p -> next; p -> next = p -> next -> next; free(q);B.p = p -> next; q = p -> next; p = q -> next; free(q);C.q = p -> next -> next; p = p -> next; free(q);D.p = p -> next -> next; q = p -> next; free(q);二、填空题7.在一个长度为n的顺序表中删除第i个元素,需要向前移动n- i个元素.8.在顺序表中插入或删除一个元素,需要平均移动表长的一半个元素,具体移动的元素个数与插入或删除的位置有关.9.顺序表中逻辑上相邻的元素在物理存储位置上一定相邻,链表结构中逻辑上相邻的元素在物理位置上不一定相邻.10.已知顺序表中一个元素的存储位置是x,每个元素占c个字节,求其后继元素位置计算公式为x+ c,而已知单链表中某一结点由p指向,求此后继结点存储地址的操作为p -> next.11.在用p指针访问单链表时,判断不是访问结束的条件是p != NULL;在访问单循环链表时,判断不是访问表结束的条件是p != head.12.已知p指向双向链表的中间某个结点,从给定的操作语句中选择合适的填空.(1)在p结点后插入s结点的语句序列是I、G、A、D.(2)在p结点前插入s结点的语句序列是C、N、H、B.(3)删除p结点的直接后继结点的语句序列是J、Q、E、M.(4)删除p结点的直接前趋结点的语句序列是K、P、F、M.(5)删除p结点的语句序列是O、R、L.A.p -> next = s B.p -> prior = s C.s -> next = pD.s -> prior = p E.p -> next = p -> next -> next F.p -> prior = p -> prior -> priorG.p -> next -> prior = s H.p -> prior -> next = s I.s -> next = p -> nextJ.q = p -> next K.q = p -> prior L.free(p)M.free(q) N.s -> prior = p -> prior O.p -> prior -> next = p -> next P.p -> prior -> prior -> next = p Q.p -> next -> next -> prior = p R.p -> next -> prior = p -> prior 13.下面是一个在带头结点的单链表head中删除所有数据域值为x的结点的算法,但不完善,请在相应的地方填上适当的语句,使之成为完整的算法.void DeleX(LinkList head, DataType x){LinkNode *p, *q, *s;P = head;q = p -> next;while (q != NULL)if (q -> data == x){s = q;q = q -> next;free(s);p -> next = q;}else{p = q;q = q -> next;}}三、算法设计题14.设有两个顺序表A和B,且都递增有序。
试写一算法,从A中删除与B中相同的那些元素(即计算A - B).SeqList Subtraction(SeqList A, SeqList B){int i, j, k = 0;//令匹配位置为0for (i = 0; i < A.Length; i++) {for (j = k; j < B.Length; j++)//从比较匹配的位置开始查起if (A.Data[i] == B.Data[j]){k = j; //记录比较到的位置for (j = i; j < A.Length - 1; j++)A.Data[j] = A.Data[j + 1];//删除相同的元素A.Length--;break;}}return A;}15.已知head是指向一个带头结点的单链表的头指针,p指向该链表的任一结点。
试写一算法,将p 所指向的结点与其后继结点交换位置.void Exchange(LinkList head, LinkNode *p){LinkNode *q, *s, *r;q = p -> next;if (q != NULL)//判断所指结点是否是最后一个结点{if (p == head)//判断所指结点是否是头结点{head = head -> next;//头结点指针域所指结点变成新的头结点s = head -> next;//记录第2个结点head -> next = p;//新的头结点指针域指向原头结点p -> next = s;//原头结点变成第1个结点后指针域指向第2个结点}else {r = head;while (r -> next != p)r = r-> next;//查找p指向结点直接前趋r -> next = q;//p指向结点直接前趋指针域指向p指向结点直接后继p -> next = q -> next;//p指向结点指针域指向p指向结点直接后继的直接后继q -> next = p;//p指向结点直接后继指针域指向p}}else printf(“p指向的结点无后继节点!”)}16.已知两条单链表A和B分别表示两个集合,其元素值递增有序。