1、(B) 数据项之间逻辑(C) 数据类型之间(D) 存储结构4、在链式存储结构中,一个存储结点存储一个_。(A) 数据项(B) 数据元素(C) 数据结构(D) 数据类型5、数据结构在计算机内存中的表示是指_。(A) 数据的存储结构(B) 数据结构(C) 数据的逻辑结构(D) 数据元素之间的关系6、在数据结构中,与所使用的计算机无关的是_。(A) 逻辑结构(B) 存储结构(C) 逻辑结构和存储结构(D) 物理结构7、数据采用链式存储结构时,要求_。(A) 每个结点占用一片连续的存储区域(B) 所有结点占用一片连续的存储区域(C) 结点的最后一个数据域是指针类型(D) 每个结点有多少个后继,就设多少
2、个指针域8、算法的时间复杂度与_有关。(A) 问题规模(B) 计算机硬件性能(C) 编译程序质量(D) 程序设计语言9、算法分析的目的是_。(A) 找出数据结构的合理性(B) 研究算法中输入与输出的关系(C) 分析算法的效率以求改进(D) 分析算法的易读性和文档性10、某算法的时间复杂度为O(n2),表明该算法的_。(A) 问题的规模是n2(B) 执行时间等于n2(C) 执行时间与n2成正比(D) 问题规模与n2成正比11、在数据结构中,与所使用的计算机无关的是数据的_结构。(A) 逻辑 (B) 存储 (C) 逻辑和存储 (D) 物理12、在数据的存储结构中,一个存储结点存储一个_。(A) 数
3、据项 (B) 数据元素 (C) 数据结构 (D) 数据类型 13、在数据结构中,与所使用的计算机无关的是_。(A)逻辑结构 (B)存储结构(C)物理结构 (D)逻辑结构与存储结构判断题:1、数据结构包含数据的逻辑结构、数据的存储结构以及数据集合上定义的运算。2、数据项是数据的最小单位。3、数据项是数据的最小单位。4、数据结构包含数据的逻辑结构、数据的存储结构以及数据集合上定义的运算。5、数据的物理结构是指数据在计算机内实际的存储形式。6、算法的优劣与算法描述语言无关,但与所用计算机有关。应用题与算法设计题部分:例题:设计一个算法,求整数数组的最大元素。解:算法如下:void MaxElem(i
4、nt a , int n, int &maxE) int k; maxE=a0;for(k=0;kn;k+) if(maxEak) minE=ak;编写一个算法,求一个整数数组中的最大元素和最小元素,并指出该算法的时间复杂度。对应的算法如下:void MaxMin(int a,int n, int &max, int &min)/该算法求数组a0.n-1的最大元素max和最小元素min。 max=min=a0;for(int i=1imax) max=aielse if(aia1) max1=a0max2=a1else max1=a1; max2=a0;for(int i=2;=n-1;max
5、1)max2=max1; max1=ai;else if(aimax2) max2=ai;编写一个算法,求一个整数数组中的最小元素和次小元素,并指出该算法的时间复杂度。void Min12(int a, int n, int &min1, int &min2)/该算法求数组a0n-1的最小元素min1和次小元素min2。 if(a0a1) min1=a0; min2=a1;else min1=a1;min2=a0;if(aimin1) min2=min1;min1=ai;min2) min2=ai;用C/C+语言描述下列算法,并给出算法的时间复杂度。(1)求一个n阶方阵的所有元素之和。(2)对
6、于输入的任意三个整数,将它们按照从小到大的顺序输出。(3)对于输入的任意n个整数,输出其中的最大和最小元素。(1)算法如下:int sum(int Ann, int n) int i, j, s=0;for(i=0;for(j=0;jb) if(bc) coutcbelse coutac;else if(ca) coutb; else if(cb) cout else coutmax) max=ak; else if(akmin) min=ak;本算法的时间复杂度为O(n)。设n是3的倍数,分析以下算法的时间复杂度(需给出推导过程)。void fun(int n) int i, j, x, y
7、; for(i=0; i=n; if(3*i=n) for(j=3*i; jnext=p (B) p-next-next=p-next(C) p-next=p (D) p-8、在一个长度为n的线性表中顺序查找值为x的元素时,在等概率情况下,查找成功时的平均查找长度为_。(A) n (B) n/2 (C) (n+1)/2 (D) (n-1)/29、在一个长度为n的顺序表中,删除值为x的元素时需要比较元素和移动元素的总次数是_。(A) (n+1)/2 (B) n/2 (C) n (D) n+110、在一个顺序表的表尾插入一个元素的时间复杂度是_。(A) O(n) (B) O(1) (C) O(n2
8、) (D) O(log2n)11、在一个顺序表的任何位置插入一个元素的时间复杂度是_。12、在一个不带头结点(首结点为*head)的单循环链表中,至少有一个结点的条件是_。(A) head!=NULL (B) head-next!=NULL(C) head=NULL (D) head-next=NULL13、在带头结点*head的循环单链表中,至少有一个结点的条件是_。(A) head-=head(C) head=NULL (D) head-(C) head-next=head (D) head!15、将两个长度为n的有序表归并为一有序表时,算法的时间复杂度是_。(A) O(1) (B) O(
9、n) (C) O(n2) (D) O(log2n)16、在长度为n的顺序表,当在任何位置上插入一个元素的概率相等时,插入一个元素需要移动的元素的平均个数为( ) (A) n/2 (B)(n-1)/ 2 (C) (n+1)/2 (D) (n+2)/217、在长度为n的顺序表中,删除第i个元素(1in)需要向后移动( )个元素。 (A) n-i (B) n-i+1 (C) n-i-1 (D) i18、一个栈的入栈顺序是1、2、3、4、5,则此栈不可能的输出顺序为( )。(A) 5、4、3、2、1 (B) 4、5、3、2、1 (C) 4、3、5、1、2 (D)1、2、3、4、519、一个队列的入队序
10、列是a,b,c,d,则队列的输出序列是( )。(A)dcba (B)abcd (C)adcb (D)cbda20、空串是指( )。 (A)空白串 (B)长度为零的串 (C)长度为1的串 (D)仅由空格组成的串21、在链式存储结构中,一个存储结点存储一个_。(A) 数据项 (B) 数据元素 (C) 数据结构 (D) 数据类型22、算法分析的目的是_。(A) 找出数据结构的合理性 (B)研究算法中输入和输出的关系(C)分析算法的效率以求改进 (D)分析算法的易读性和文档性23、一个队列的入队序列是abcd,则队列的输出序列是_。24、在表长为n的顺序表上做插入运算,平均要移动的结点数为( )。 (
11、A)n (B) n/2 (C) n/3 (D) n/425、在双链表某结点(己知其地址)前,插入一新结点,其所需时间是( )。 (A)O(1) (B) O(lgn) (C) O(n) (D) O(n2)26、设长度为n的链队列用单循环链表表示,若只设头指针,则出队操作的时间复杂度为( )。 (A) O(1) (B) O(lgn) (C) O(n) D O(n2)27、在表长为n的顺序表上做删除运算,在等概率的情况下,平均要移动的结点数为( )。 (A)n/2 (B) (n-1)/2 (C) n/3 (D) n/428、线性表( a1,a2,an)以链接方式存储时,访问第i位置元素的时间复杂性为
12、( )(A)O(i) (B)O(1) (C)O(n) (D)O(n/2)29、线性表的下列存储结构中,读取指定序号的元素花费的时间最少的是_。(A)单链表 (B)顺序表 (C)双链表 (D)循环链表30、线性表采用链式存储结构时,其地址_。(C) 部分地址必须是连续的 (D) 连续与否均可31、在线性表的下列存储结构中,读取指定序号的元素花费时间最少的是_。(A) 单链表 (B) 双链表 (C)循环链表 (D)顺序表32、 若某线性表中最常用的操作是提取第i个元素及找第i个元素的前驱元素,则采用( )存储方式最省时间。(A)单链表 (B)双链表 (C)单向循环链表 (D)顺序表33、在长度为n
13、的顺序表中,向第i个元素(1in+1)前插入一个元素需要向后移动( )个元素。34、在一个单链表HL中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行( )。(A) q-next; p-next=q; (B) p-next=q- q=p; q- (D) p-nxet=p;35、在表长为n的顺序表上做插入运算,平均要移动的结点数为( )。36、在双链表某结点(己知其地址)前,插入一新结点,其所需时间是( )。37、在长度为n的顺序表中,当在任何位置插入一个元素的概率相等时,插入一个元素需要移动的元素的平均个数是_。(A)n/2 (B) (n-1)/2 (C) (n+1)/2 (D
14、)(n+2)/238、 若某线性表中最常用的操作是提取第i个元素及找第i个元素的前驱元素,则采用( )存储方式最省时间。49、在长度为n的顺序表中,向第i个元素(1in+1)前插入一个元素需要向后移动( )个元素。40、在一个单链表HL中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行( )。1、顺序查找方法只能在顺序存储结构上进行。2、线性表的顺序存储结构优于链式存储结构。3、对于单链表来说,只有从头结点开始才能扫描表中全部结点。4、对于单链表来说,只有从头结点开始才能扫描表中全部结点。5、双向链表的特点是很容易找任何一个结点的前趋和后继。6、线性表的顺序存储结构优于链式存储
15、结构。7、凡是为空的单链表都是不含任何结点的。8、向顺序表中插入一个元素,平均要移动大约一半的元素。9. 线性表采用链表方式和顺序表方式存储,执行插入和删除运算的时间复杂度都是O(n),因而两种存储方式的插入、删除运算所花费的时间相同。10、线性表采用链表方式和顺序表方式存储,执行插入和删除运算的时间复杂度都是O(n),因而两种存储方式的插入、删除运算所花费的时间相同。11、线性表采用链式存储时,结点和结点内部的存储空间可以是不连续的。12、单链表中的头结点就是单链表的第一个结点。13、在带头结点的单循环链表中,任何一个结点的后继结点的指针均非空。14、线性表采用链表方式和顺序表方式存储,执行
16、插入和删除运算的时间复杂度都相同。15、分配给单链表的内存单元地址必须是连续的。16、双向链表的特点是很容易找任何一个结点的前趋和后继。17、线性表的顺序存储结构优于链式存储结构。18、对于单链表来说,只有从头结点开始才能扫描表中全部结点。19、线性表就是顺序表。20、线性表采用链表方式和顺序表方式存储,执行插入和删除运算的时间复杂度都是O(n),因而两种存储方式的插入、删除运算所花费的时间相同。21、在带头结点的单循环链表中,任一结点的后继指针均非空。22、线性表采用链表方式和顺序表方式存储,执行插入和删除运算的时间复杂度都是O(n),因而两种存储方式的插入、删除运算所花费的时间相同。23、
17、在带头结点的单循环链表中,任一结点的后继指针均非空。24、线性表采用链式存储时,结点和结点内部的存储空间可以是不连续的。填空题:1、单链表是 的链接存储表示。2、在有n个元素的顺序表中删除任意一个元素所需移动结点的平均次数是 。3、在双链表中,每个结点有两个指针域,一个指向 另一个指向 。4、在带有头结点的单链表L中,第一个元素结点的指针是 例题、叙述线性表的两种存储结构各自的主要特点。答:线性表的两种存储结构分别是顺序存储结构和链式存储结构。顺序存储结构的主要特点是:(1)结点中只有自身的信息域,没有关联信息域。因此,顺序存储结构的存储密度大、存储空间利用率高。(2)通过计算地址直接访问任何
18、数据元素,即可以随机访问。(3)插入和删除操作会引起大量元素的移动。链式存储结构的主要特点是:(1)结点除自身的信息域外,还有表示关联信息的指针域。因此,链式存储结构的存储密度小、存储空间利用率低。(2)在逻辑上相邻的结点在物理上不必相邻,因此,不可以随机存取,只能顺序存取。(3)插入和删除操作方便灵活,不必移动结点只需修改结点中的指针域即可。例题、已知顺序表L,请设计一算法,在L的第i个位置插入x。存储结构如下:typedef struct SqList ElemType *elem;int length;int listsize;SqList;在顺序表L的第i个位置(下标为i-1)上插入x的算法如下:void InsertSqList(SqList &L, int i, ElemType x)ElemType *p, *q;if(iL.length) return; /插入位置不合法。p=&L.elemi-1; q=&L.elemL.length-1;while(q=p) *(q+1)=*q; q-;后移*p=x;/插入L.length+;例题、已知顺序表L,请设计一个算法,删除L中所有值为x的结点。void DeleteAllx(SqList &L, ElemType x) int num=0;int i, j;i=0; j=0;while(j=0 & xL.elem
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1