数据结构II试卷B及答案(孟凡荣)
《数据结构》期终考试试卷(B卷)及答案

适用专业:一、单项选择题(每题2分,共40分)1.算法的时间复杂度是指( )A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数2.在一个单链表HL中,若要删除由指针q所指向结点的后继结点,则执行()。
A.p = q->next ; p->next = q->next; B.p = q->next ; q->next = p;C.q->next = q->next->next; q->next = q; D.p = q->next ; q->next = p->next; 3.下列叙述中正确的是( )A.线性表是线性结构 B. 栈与队列是非线性结构C.线性链表是非线性结构 D. 二叉树是线性结构4.若让元素1,2,3依次进栈,则出栈次序不可能出现()种情况。
A.3,2,1 B.2,1,3 C.3,1,2 D.1,3,25.图的广度优先搜索类似于树的()次序遍历。
A.先根B.中根C.后根D.层次6.具有n个顶点的有向无环图最多可包含()条有向边。
A.n-1 B.n C.n(n-1)/2 D.n(n-1)7.已知单链表A长度为m,单链表B长度为n,若将B联接在A的末尾,其时间复杂度应为( ) 。
A.O(1) B.O(m) C.O(n) D.O(m+n)8.若要在单链表中的结点*p之后插入一个结点*s,则应执行的语句是( )。
A.s->next=p->next; p->next=s; B.p->next=s; s->next=p->next;C.p->next=s->next; s->next=p; D.s->next=p; p->next=s->next;9.假定一个链式队列的队头和队尾指针分别为front和rear,则判断队空的条件为( )。
年月考试《数据库技术(B)孟凡荣》考核作业

东北大学继续教育学院数据库技术试卷(作业考核线上) B 卷学习中心:院校学号:姓名(共页)1.当数据的存储结构改变时,数据的逻辑结构可以不变,从而应用程序也不用改变这就是数据与程序的A.物理独立性 B.逻辑独立性C.一致性 D.完整性 [ ] 2.有两个实体集,并且它们之间存在着一个1:M联系,那么根据ER模型转换成关系数据库的规则,这个ER结构转换成表的个数为A.1 B.2 C.3 D.4 [ ] 3.下列叙述正确的是A.主码是一个属性,它能惟一标识一列B.主码是一个属性,它能惟一标识一行C.主码是一个属性或多个属性的组合,它能惟一标识一列D.主码是一个属性或多个属性的组合,它能惟一标识一行 [ ] 4.在标准SQL中,表示短整型数据类型的语法用A.INTEGER语句 B.INT语句C.NUMERIC语句 D.SMALLINT语句 [ ] 5.已知关系S(S#,SNAME,AGE,SEX),SC(S#,C#,GRADE),统计每一年龄段选修课程的学生人数的操作如下:SELECT AGE,COUNT(*)FROM S,SCWHERE S.S#=SC.S#GROUR BYA.S.S# ,SC.S# B.DISTINCT S.S#, SC.S#C.DISTINCT S.S#,AGE D.S.S#, AGE [ ] 6.有关系模式:学生(学号,姓名,年龄,系号)。
对学生关系的查询语句如下:SELECT 系号,AVG(年龄)FROM 学生如果要完成该语句的功能,应该添加的语句是A.GROUP BY 学号 B. GROUP BY 系号C.ORDER BY 学号 D. ORDER BY 系号 [ ]7.有关系模式:教学(学号、教工号、课程号)。
假定每个学生可以选修多门课程,每门课程可以由多名学生来选修,每个老师只能讲授一门课程,每门课程只能由一个老师来讲授,那么该关系模式存在的问题是A.插入异常B.删除异常C.修改复杂D.以上都有 [ ]8.SQL Server2000为保证数据的完整性、一致性,常采用A.触发器技术和网络技术B.触发器技术和封锁技术C.存储过程技术和封锁技术D.触发器技术和存储过程技术 [ ]9.在数据库恢复机制中,日志文件的作用是用于数据库恢复。
东北大学 数据结构II 试卷(作业考核 线上1)A 卷 孟凡荣

东北大学继续教育学院数据结构II 试卷(作业考核线上1) A 卷学习中心:院校学号:姓名(共 6 页)[A ]1.抽象数据类型的三个组成部分分别为A.数据对象、数据关系和基本操作B.数据元素、逻辑结构和存储结构C.数据项、数据元素和数据类型D.数据元素、数据结构和数据类型[B ]2.要求相同逻辑结构的数据元素具有相同的特性,其含义为A. 数据元素具有同一的特点B. 不仅数据元素包含的数据项的个数相同,而且其对应数据项的类型要一致C. 每个数据元素都一样D. 仅需要数据元素包含的数据项的个数相同[D ]3.下列各式中,按增长率由小至大的顺序正确排列的是A.,n!,2n ,n3/2B.n3/2,2n,n logn,2100C.2n,log n,n logn,n3/2D.2100,logn, 2n, n n[B ]4. 在下列哪种情况下,线性表应当采用链表表示为宜A.经常需要随机地存取元素B.经常需要进行插入和删除操作C.表中元素需要占据一片连续的存储空间D.表中元素的个数不变[C ]5.设指针p指向双链表的某一结点,则双链表结构的对称性是A. p->prior->next=p->next->next;B. p->prior->prior=p->next->prior;C. p->prior->next=p-> next->prior;D. p->next->next= p->prior->prior;[ D]6. 已知指针p和q分别指向某带头结点的单链表中第一个结点和最后一个结点。
假设指针s指向另一个单链表中某个结点,则在s所指结点之后插入上述链表应执行的语句为A. s->next=q;p->next=s->next;B. s->next=p;q->next=s->next;C. p->next=s->next;s->next=q;D. q->next=s->next;s->next=p;[A ]7. 栈和队列的共同特点是A.只允许在端点处插入和删除元素B.都是先进后出C.都是先进先出D.没有共同点[D ]8. 对于链队列,在进行插入运算时.A. 仅修改头指针B. 头、尾指针都要修改C. 仅修改尾指针D.头、尾指针可能都要修改[B ]9.设有一个顺序栈的入栈序列是1、2、3,则3个元素都出栈的不同排列个数为A.4 B.5 C. 6 D. 7[D ]10.设一个栈的输入序列为A,B,C,D,则借助一个栈所得到的输出序列不可能是A.A,B,C,D B.D,C,B,AC. A,C,D,BD. D,A,B,C[C ]11.表达式a*(b+c)-d的后缀表达式是A.abcd*+- B.abc*+d- C.abc+*d- D.-+*abcd[B ]12.某二叉树的先序序列和后序序列正好相反,则该二叉树的特点一定是A. 空或只有一个结点B.高度等于其结点数C. 任一结点无左孩子D.任一结点无右孩子[B ]13.下面的说法中正确的是(1)任何一棵二叉树的叶子结点在种遍历中的相对次序不变。
数据结构-试卷二及答案

数据结构-试卷二及答案一、判断(每小题 1 分,共 10 分) 1.数据的存储结构是数据的逻辑结构的存储映象,不仅要存储数据元素的值,还要存储元素之间的相互关系。
2.用顺序表来存储线性表时,不需要另外开辟空间来保存数据元素之间的相互关系。
3.完全二叉树的叶子结点只能出现在最后一层上。
4.折半查找方法要求待查表必须是有序的顺序表。
5.在有向图 G 中, V 2 , V 1 和 V 1 , V 2 是两条不同的边。
6.图的最小生成树是唯一的。
7.从循环单链表的某一结点出发,只能找到它的后继结点,不能找到它的前趋结点。
8.在单链表中,头结点是必不可少的。
9.对快速排序来说,初始序列为正序和反序,都是最坏情况。
10.广义表是特殊的线性表。
二、选择(每题 1 分,共 15 分) 1.设栈 S 和队列 Q 的初始状态均为空,元素 abcdefg 依次进入栈 S 。
若每个元素出栈后立即进入队列 Q ,且 7 个元素出队的顺序是bdcfeag ,则栈 S 的容量至少是()。
A.1 B.2 C.3 D.4 2.下列线索二叉树1/ 8中(用虚线表示线索),符合后序线索树定义的是( )。
3.已知广义表 A= (( a,b ) ,(c,d) ) , 则 head(A) 等于 ( )。
A.(a,b) B.((a,b)) C.a,b D.a 4.设字符串s1=‘ABCDEFG’,s2=‘PQRST’, 则运算s=strcat(strsub(s1,2,strlen(s2)),strsub (s1,strlen(s2),2))后结果为()。
A.BCQR B.BCDEF C.BCDEFG D.BCDEFEF 5.具有 8 个顶点的连通图的深度优先生成树,其边数为()。
A.8 B.9 C.7 D.6 6.算法分析的两个主要方面是()。
A.空间复杂性和时间复杂性 B.正确性和简明性 C.可读性和文档性 D.数据复杂性和程序复杂性 7.下列四种排序中()的空间复杂度最大。
数据结构B模拟试卷及答案-推荐下载

A.3 B.5 C.8 D.9 10.用某种排序方法对线性表(25,84,21,47,15,27,68,35,20)进行排序时,元 素序列的变化情况如下: 25,84,21,47,15,27,68,35,20 15,84,21,47,25,27,68,35,20 15,20,21,47,25,27,68,35,84 15,20,21,25,47,27,68,35,84 . . 15,20,21,25,27,35,47,68,84 则采用的排序方法是( )。 A.冒泡排序 B.快速排序 C.归并排序 D.选择排序 二、求解题(共计 59 分) 1.已知二叉树的扩展前序序列:FKHφφBEφφφGAφφDφCφφ.请画出该二叉树 并写出该树的中序和后序序列。(12 分)
5.循环队列用数组 A[0,m-1]存放其元素值,已知其头尾指针分别是 front 和 rear,则当前队列中的元素个数是()。 A.(rear-front+m)%m B.read-front+1 C.read-front-1 D.read-front
6.设二维数组 a[0…m-1][0…n-1]按行优先顺序存储在首地址为 loc(a00)的存 储区域中,每个元素占 d 个单元,则 aij 的地址为________。 A. loc(a00) +( i×n+ j) ×d B. loc(a00) +(j×m+i) ×d C. loc(a00) +((j-1)×n+i-1) ×d D. loc(a00) +((j-1)×m+i-1) G=<V,E>,其中 V={a,b,c,d,e},E={(a,b),(a,e),(b,e),(b,c),(c,e),(e,d)}.请 画出图 G 的邻接矩阵,邻接表。从结点 a 出发,分别写出按深度优先搜索法和广 度优先搜索法进行遍历的结点序列。(12 分)
数据结构(第二版) 模拟试题自测卷AB卷带答案1

C.连续与否均可D.和头结点的存储地址相连续
3.若让元素1,2,3依次进栈,则出栈时的序列不可能出现的是()。
A.3,2,1B.1,2,3C.3,1,2D.2,1,3
4.下面说法不正确的是()
A.串S1=“this_is_a_string”的长度是16。
B.串S2=“this”是串S1的子串。
A. n-iB. n-i+1C. n-i-1D. i
8.下面关于线性表的叙述错误的是________。
A.线性表采用顺序存储必须占用一片连续的存储空间
B.线性表采用链式存储不必占用一片连续的存储空间
C.线性表采用链式存储便于插入和删除操作的实现
D.线性表采用顺序存储便于插入和删除操作的实现
9.Push(e)表示e进栈,Pop(e)表示退栈并将栈顶元素存入e。下面的程序段可以将A,B的值交换的操作序列是________。
10.下面哪种排序方法稳定性最好()。
A.希尔排序B.冒泡排序C.快速排序D.堆排序
二、填空题(本题共20分)
1.数据的逻辑结构可以分为两大类:_________和________。
2.在二叉树的第i层上最多有___________个结点。
(61 87 170 503 512 908)897 275 653 462
(61 87 170 503 512 897 908)275 653 462
(61 87 170 275 503 512 897 908)653 462
(61 87 170 275 503 512 653 897 908)462
5、(5分)
6.(7分)
层序遍历序列:ABECFDGH
数据结构试卷-20201012-B卷参考答案

数据结构B卷参考答案与评分标准Ⅰ. 基本概念部分(共70分)1 (8分)C1 C2 C4 C9 C10 C11 C6 C12 C3 C5 C7 C8 或C1 C9 C2 C4 C10 C11 C12 C6 C3 C5 C7 C83个一组,每对一组得2分,一组中对第一个得1分,从错的地方开始不得分2 (8分)3 (6分)4 (6分)5 (按顺序序条语句2分)ltmp->next = fence->next;fence->next = ltmp;ltmp->prev = fence;ltmp->next->prev = ltmp;完全二叉树得3分,每下滤1步得1分7 (6分)从字面上理解,再次删除值为20的节点把22和24往上提一步也算对。
8 (1个1分,全对6分)1 2 5 3 6 9 7 4 8每三个一组得2分9 (6分)10 (1)e3,e1,e4,e2 不能。
e3先出栈,说明e1,e2都还在栈里,且e2处在e1的上面,若要出栈,则一定是e2先于e1出栈。
(2)e2,e4,e3,e1 可以。
e2 先出栈,此时只有e1在栈内。
把e3,e4进栈,再依次出栈即可得到。
(3)e3,e4,,e1,e2 不能。
e3先出栈,说明e1,e2都还在栈里,且e2处在e1的上面,若要出栈,则一定是e2先于e1出栈。
每个2分。
结论1分。
说明1分。
共6分11 (6分)Ⅱ. 综合应用部分(共30分)1void sort(){Link<Elem> *t,*p; //声明一个临时指针Link<Elem> *l = head; //声明一个临时指针并把表头赋给它head = NULL; //把表头清空while(l != NULL){ //如果链表不空t = l; //把第一个节点取出来l = l->next; //指针后移//插到合适的位置t->next = NULL;if(head == NULL){head = t;}else{p = head;if(t->value() <= p->value()){ //插到表头t->next = head;head = t;}else{while( p->next != NULL && p->next->value() > t->value()) p = p->next;if(p->next == NULL) p->next = t; //如果到了链表尾,则插入else{t->next = p->next->next;p->next = t;}}}}}2bool isPair(char *s){Stack<char> *stack;char cs;int i;stack = new AStack<char>();for(i = 0; i < strlen(s); i++){if(s[i] == '{') stack->push(s[i]);else if(s[i] == '}'){if(!stack->pop(cs)) return false;}}return (!stack->pop(cs));}3bool isSame(GTNode<Elem>* r1,GTNode<Elem>* r2){bool br = true;GTNode<Elem> * t1,*t2;if(r1 == NULL && r2 == NULL) return true;else if(r1 != NULL && r2 !== NULL){//根节点都不为空,判断值及相应的子树。
数据结构B答案

一、单项选择题(本大题共15小题,每小题2分,共30分) 1-5 BAACB 6-10 ADACA 11-15 ACCBB二、填空题(本大题共10个空,每空1分,共10分)16. e=d 17. O(n 2) 18. 17 71 19. 4 , 10 20. N-1 21.线性结构,树型结构,图型结构三、判断题(本大题共10小题,每个1分,共10分)22.× 23.√ 24.× 25. √ 26.√ 27. × 28.× 29.× 30.√ 31.×四、应用题(本大题共4小题,每小题10分,共40分)。
32.可能的序列:a b c a c b b a c b c a c b a .............(5分) 对应的操作序列依次为:(1)push(a), pop(a), push(b), pop(b), push(c), pop(c) (2)push(a), pop(a), push(b), push(c), pop(c), pop(b) (3)push(a), push(b), pop(b) , pop(a), push(c), pop(c) (4)push(a), push(b), pop(b), push(c), pop(c) , pop(a) (5)push(a), push(b), push(c), pop(c), pop(b) , pop(a).............(每个序列1分)33. (4) .............(6分)0 2 3 1 434.....................(画出此树可得7分)。
(2) a:0101, b:10, c:01000, d:11, e:011, f:000, g:01001,h:001 ................... (3分)35. 根据题目给定的散列函数H(K)=K%13,其值域为0~12,可设计用于指向单链表的散列表表头数组HT[0…12]。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
东北大学继续教育学院数据结构II 试卷(作业考核线上) B 卷(共8 页)一、单选题(每小题2分,共10小题,20分)[A ] 1.抽象数据类型的三个组成部分分别为A.数据对象、数据关系和基本操作B.数据元素、逻辑结构和存储结构C.数据项、数据元素和数据类型D.数据元素、数据结构和数据类型[D ] 2.下列各式中,按增长率由小至大的顺序正确排列的是A.n,n!,2n ,n3/2 B.n3/2,2n,n logn,2100C.2n,log n,n logn,n3/2 D.2100,logn, 2n, n n[A ] 3. 已知指针p和q分别指向某单链表中第一个结点和最后一个结点。
假设指针s指向另一个单链表中某个结点,则在s所指结点之后插入上述链表应执行的语句为A. q->next=s->next;s->next=p;B. s->next=p;q->next=s->next;C. p->next=s->next;s->next=q;D. s->next=q;p->next=s->next;[C ] 4.二维数组A[20][10]采用行优先的存储方法,若每个元素占2个存储单元,且第1个元素的首地址为200,则元素A[8][9]的存储地址为A.374 B.576C.378 D.580[B ] 5.设有一个顺序栈的入栈序列是a、b、c,则3个元素都出栈的可能不同排列个数为 A.4 B.5C. 6D. 7[D ] 6. 设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1 则T中的叶子数为A.5 B.6C.7 D.8[C ] 7.以下说法不正确的是A.无向图中的极大连通子图称为连通分量B.连通图的广度优先搜索中一般要采用队列来暂存刚访问过的顶点C.图的深度优先搜索中一般要采用栈来暂存刚访问过的顶点D.有向图的遍历不可采用广度优先搜索[B ] 8. 假设在构建散列表时,采用线性探测解决冲突。
若连续插入的n个关键字都是同义词,则查找其中最后插入的关键字时,所需进行的比较次数为A. n-1B. nC. n+lD. n+2[B ] 9.设置溢出区的文件是A.索引非顺序文件B.ISAM文件C.VSAM文件D.顺序文件[A ] 10. 已知一组关键字为{25,48,36,72,79,82,23,40,16,35},其中每相邻两个为有序子序列。
对这些子序列进行一趟两两归并的结果是A.{25,36,48,72,23,40,79,82,16,35}B.{25,36,48,72,16,23,40,79,82,35}C.{25,36,48,72,16,23,35,40,79,82}D.{16,23,25,35,36,40,48,72,79,82}二、填空题(每小题1分,共10小题,10分)11.下面程序段中带下划线的语句的执行次数的数量级是( logn )。
2i=1; WHILE(i<n) i=i*2;12.假设带头结点的非空单循环链表中仅设尾指针L,则在第1个结点之前插入指针s所指结点的语句依次是( s->nest=L->next->next;L->next->next =S )。
13.无表头结点的链队列Q为空的条件是( Q->real==Q->front=NULL )。
14.设Q[0..N-1]为循环队列,其头、尾指针分别为P和R,则队Q中当前所含元素个数为((R-P+N)% N )。
15.一棵含999个结点的完全二叉树的深度为( 10 )。
16.在 AOV网中,存在环意味着某项活动以自己为先决条件;对程序的数据流图来说,它表明存在(死循环)。
17. 有向图G可拓扑排序的判别条件是( 不存在环 )。
18.如果结点A有 3个兄弟,而且B是A的双亲,则B的度是( 4 )。
19.应用回溯与分支限界法解决实际问题时,在搜索过程中利用判定函数,也称为(限界函数)。
20. 若以1234作为双端队列的输入序列,则既不能由输入受限的双端队列得到,也不能由输出受限的双端队列得到的输出序列是( 4231 )。
三、应用题(每小题6分,共5小题,30分)21.比较线性表和栈的基本操作的不同点。
解答:主要区别是对插入和删除操作的限制。
如线性表允许在表内任一位置进行插入和删除;而队列只允许在表尾一端进行插入,在表头一端进行删除;所以也称队列为受限的线性表。
表头为队列头;表尾为队列尾。
插入删除线性表 Insert(L,i,x) Delete(L,i)(1≤i≤n+1) (1≤i≤n)队列Insert(L,n+1,x) Delete(L,1)22.有一个二叉树按层次顺序存放在一维数组中,如下图所示:试求:(1)该树的后序遍历序列。
(2)画出该树的后序线索树。
1 2 3 4 5 6 7 8 9 10 11解答:(1)后序遍历序列C E D B A(2)后序线索树23.分析顺序查找算法的“监视哨”设置作用解答:为了考虑查找不成功的情况,在每次进行关键字的比较前,首先要判断循环变量i是否数组越界,这对算法来说是必要的。
如果每步省略数组下标是否越界的判断,则可以大大提高算法运行的效率。
为此,可以利用预留的0号单元,作为所设的“监视哨”控制循环变量i的出界。
假设数据从后向前比较,监视哨设在数组低端 L.elem [0] = k将算法中的判断语句while (i <= L.length &&L.elem [i] != k) ++i;改为 while (L.elem [i] != k) --i;这样,当在查找表中不存在其关键字等于给定值的数据元素时,i必等于0,并且这样的处理并不影响查找成功的情况。
24.对n个整数的序列进行直接选择排序。
(1)算法描述。
(2)并给出实例(52 49 80 36 14 58 61 23 )的排序过程。
解答:(1)直接选择算法描述:[1] 第1趟,从n个记录中,经过比较选出关键字值为最小的记录,并与第1个记录交换位置。
[2] 第2趟,从余下的n-1个记录中选择出当前关键字最小的排序,并与第 2个记录交换位置。
[3] 第i趟,在无序的第i个到第n个的n-i+1 个记录中选出关键字最小的记录,与第i个记录进行互换。
[4] 以此类推,直至第n-1趟排序结束。
(2)初始状态52 49 80 36 14 58 61 23i=1 [14] 49 80 36 52 58 61 23i=2 [14 23] 80 36 52 58 61 49i=3 [14 23 36] 80 52 58 61 49i=4 [14 23 36 49] 52 58 61 80i=5 [14 23 36 49 52] 58 61 80i=6 [14 23 36 49 52 58] 61 80i=7 [14 23 36 49 52 58 61] 80排序结果 [14 23 36 49 52 58 61 80 ]25.已知有一个10个顶点的连通图,顶点编号为1至10,其边的关系集合表示为{(1,2)(1,3),(1,8),(2,4),(3,9),(3,10),(5,7),(6,7),(7,8),(8,9)},试求:画出该连通图及以顶点1为根的深度优先生成树。
解答:四、算法阅读题(本题10分)26.设计算法实现以链表作存储结构,将线性表中前m个元素和后n个元素进行整体互换,即(a1,…,am,b1,…,bn) 改变成(b1,…,bn,a1,…,am)。
阅读算法,在横线处填入语句或注释。
void exchange_L( Linklist &L,int m ) {// 本算法实现单链表中前m个结点和后n个结点的整体互换 if ( m && L->next ) { // 链表不空且p = L->next;(1)while( k< m && p ) { //(2)p = p->next; ++k;} // whileif (p && (3)) { // n!=0 时才需要修改指针ha = L->next; // 以指针 ha 记a结点的位置1(4)= p->next; // 将 b1 结点链接在头结点之后的后继为空p->next = NULL; // 设am结点q = L->next; // 令q 指向 b1while (q->next)q = q->next; // 查找 b结点nq->next = ha; // (5)} // if(p)} // if(m)} // exchange_L解答:(1)k = 1;(2)查找第a m个结点(3)p->next(4)L->next(5)将第 a1 结点链接到 b n结点之后五、算法阅读题(本题10分)27.设任意n个整数存放于数组A(1:n)中,阅读算法,指出功能及分析指针i和j的作用。
void Arrange(int A[],int n) {// n个整数存于数组A中int i=0,j=n-1,x; // 数组下标从0开始while(i<j){while(i<j && A[i]>0) i++;while(i<j && A[j]<0) j--;if(i<j) { // 交换A[i] 与A[j]x=A[i]; A[i++]=A[j]; A[j--]=x;}// if}// while}//Arrange(1)功能:解答:1.把数组中从A(1:n)->A(1:0)中第一个大于0的数,赋给数组中从A(1:0)->A(1:n)中第一个小于0的后面第一个数组;2.把数组中从A(1:0)->A(1:n)中第一个小于0的数,赋给数组中从A(1:n)->A(1:0)中第一个大于0的后面第一个数组;(2)指针i和j的作用:解答:I为计数器作用,从0开始递增1关系,递增到数组中从低到高第一个小于0截止J为计数器作用,从大数开始递减1关系,递减到数组中从高到低第一个大于0截止六、算法设计题(本题10分)28.设计算法purge_Sq实现删除顺序表SqList中重复元素,指出其算法的时间复杂度。
解答:void purge_Sq( SqList &L ) {// 删除顺序表L中的重复元素k = -1;// k 指示新表的表尾for (i=0; i<L.length; ++i) { // 顺序考察表中每个元素j=0;while(j<=k && L.elem[j]!=L.elem[i])++j; // 在新表中查询是否存在和L.elem[i]相同的元素if ( k==-1 || j>k )// k=-1 表明当前考察的是第一个元素L.elem[++k] = L.elem[i];} // forL.length = k+1;// 修改表长} // purge_Sq此算法的时间复杂度为O (L.length2 )。