2009Java数据结构考题
- 格式:doc
- 大小:38.00 KB
- 文档页数:3
一、1、编译和运行下面的应用程序,屏幕输出的结果是( C )。
public class Test {public static void main(String args[]) {A a=new A("aaaaa");A.B b=a.new B();System.out.println(a.outStr+b.inStr);}}class A {String outStr;public A(String s) {outStr=s;}public class B {public String inStr="bbbbb";}}A) aaaaa B)ababa C) aaaaabbbbb D) bbbbb2、当某一线程正处于休眠状态,而另一个线程用Thread 类中的interrupt() 方法中断它时,抛出的异常类型是(A )。
A) InterruptedException B) RuntimeExceptionC) IOException D) ClassNotFoundException3、以下是应用程序中定义的静态方法printBinary,若在其main方法中有方法调用语句printBinary(2),则输出的结果是( D )。
static void printBinary(int i) {System.out.print(i + "的2进制数表示为:\t");for(int j = 31; j >=0; j--)if(((1 << j) & i) != 0)System.out.print("1");elseSystem.out.print("0");System.out.println();//换行}A) 00000000000000000000000000000001B) 00000000000000000000000000000000C) 00000000000000000000000000001111D) 000000000000000000000000000000104、下面语句的功能是( C )。
西华大学课程考试参考答案(A卷)课程代码: 8401801 试卷总分: 100 分一、单项选择题参考答案及评分标准:(本大题共20个小题,每小题2分,共40分)评分标准:选对一题得2分,不选或选错得0分。
1-5:CBACC 6-10:CCBDB 11-15:ABCCD 16-20:CADDC二、算法理解题参考答案及评分标准:(本大题共3个小题,第1、2小题各7分,第3小题6分,共20分)评分标准:请根据各解答步骤酌情给分。
1. 解:构造过程各图(略),最后结果为:2. 解:设权w=(5,29,7,8,14,23,3,11),可构造一棵赫夫曼树如下图所示。
所得赫夫曼编码为:A: 0110B: 10C: 1110D: 1111E: 110F: 00G: 0111H: 0103. 解:(1)希尔排序第一趟(增量d=5)排序后 7、12、36、23、12、51、60、55、72、49第二趟(增量d=3)排序后 7、12、36、23、12、51、49、55、72、60第三趟(增量d=1)排序后 7、12、12、23、36、49、51、55、60、72(2)归并排序第一趟排序后 12、51、23、55、7、49、36、60、12、72第一趟排序后 12、23、51、55、7、36、49、60、12、72第三趟排序后 7、12、23、36、49、51、55、60、12、72第四趟排序后 7、12、12、23、36、49、51、55、60、72三、算法设计题参考答案及评分标准:(本大题共4个小题,每小题10分,共40分)评分标准:请根据编程情况酌情给分。
1. 参考答案示例:void DelInsert(LinkList &L){∥本算法将带头结点的非空单链表L中数据域值最小的那个结点移到链表的最前面。
p=L->next;∥p是链表的工作指针pre=L;∥pre指向链表中数据域最小值结点的前驱。
q=p;∥q指向数据域最小值结点,初始假定是首元结点while (p->next!=NULL){ if(p->next->data<q->data){ pre=p;q=p->next;} ∥找到新的最小值结点 p=p->next;}if (q!=L->next){ pre->next=q->next;∥将最小值结点从链表上摘下q->next= L->next;∥将q结点插到链表最前面L->next=q;}}//DelInsert2. 参考答案示例:void Count(BiTree T,int &n0,int &n){//统计二叉树T上叶结点数n0和非叶结点数n。
填空题(共 个空白, 填空题 共 20 个空白 每空 2 分,共 40 分) 共1. 请定义一个整数数组,数组名为 a, 容量为 10: 2. 请定义一个字符串数组,数组名为 b, 容量为 5: 3. 如果已知有一个整数数组 c, 要判断该数组的长度, 应该使用什么语句: 4. 如果已知有一个有序集对象 list, 要判断该对象的元素个数,应该使用什么语句: 5. 请定义一个类, 类名为 MyClass, 访问权限为所有类都可以访问: 6. 请定义一个接口,接口名为 Printable,访问权限为所有类都可以访问: 7. 请写出 Java 类的默认入口函数的定义: 8. 编译 Java 源文件的命令是: 编译后的文件称之为: 9. 运行 Java 程序的命令是: 10. 如果要在程序中使用无序集,需要导入相应的类,导入 HashSet 的语句是: 11. Java 判断真或假的数据类型是: ,它的取值只有两种,分别是: 和 12. 请定义一个常量,名为 CON,数据类型为 String,取值为”Test”: 13. Java 中预定义的线程类是: 14. 利用 Scanner 类从键盘读入一个字符串: 15. 在 Java 中,捕捉异常的语句是: 16. 在 Java I/O 中采用流的的概念来读取和输出数据,写出能实现输入输出功能的流类,分 别是: 和 17. 服务器套接字的主要作用是单项选择题(共 个小题,每题 单项选择题 共 10 个小题 每题 2 分,共 20 分) 共1. 在 Java 中,类的构造函数命名说法正确的是? A. 可任取 B. 必须跟源文件名相同 C. 必须跟类名相同 D. 必须跟对象名相同 2. 在 Java 中,一个源文件可以存放几个公有类(即被 public 修饰的类)? A. 1 个 B.2 个 C.3 个 D. 无数个 3. 下面这段程序代码有什么错误?String str = null; if (str.equals(“Hello”)) { System.out.println(“str is Hello”); } else { System.out.println(“str is null”); }A. 正确运行,结果是 str is Hello B.正确运行,结果是 str is null C. 运行时出错,抛出 ng.NullPointerException 异常4. 下面这段程序的运行结果是什么?String s1 = “Hello”; String s2 = new String(“Hello”); if (s1==s2) { System.out.println(“s1 等于 s2”); } else { System.out.println(“s1 不等于 s2”); }A. 正确运行,结果是 s1 等于 s2 C. 运行时出错 5. 下面这段程序的运行结果是什么?String s1 = “Hello”; String s2 = new String(“Hello”); if (s1.equals(s2)) { System.out.println(“s1 等于 s2”); } else { System.out.println(“s1 不等于 s2”); }B. 正确运行,结果是 s1 不等于 s2A. 正确运行,结果是 s1 等于 s2 C. 运行时出错 6. 下面这段程序的运行结果是什么?public class Test1 { public int add(int a) { a++; return a; } public static void main(String[] args) { Test1 t = new Test1(); int number = 3; System.out.print(t.add(number)); } }B. 正确运行,结果是 s1 不等于 s2A. 正确运行, 结果是 3 C. 运行时出错. 7. 下面这段程序的运行结果是什么?public class Test2 { public String add(String a) { a = a + “World”; return a; }B. 正确运行, 结果是 4public static void main(String[] args) {Test2 t = new Test2(); String s = “Hello”; t.add(s); System.out.print(s); } }A. 正确运行, 结果是 Hello B. 正确运行, 结果是 HelloWorld C. 运行时出错. 8. 下列哪个方法没有重载这个方法? public int add(int a, float b) B. public int add() A. public int add(int a, int b) C. public int add(float a, int b) D.public int add(int c, float d) 9. 下列哪个方法覆盖了这个方法? public int add(int a, float b) A. public int add(int a, int b) B. public int add() C. public int add(float a, int b) D.public int add(int c, float d) 10. 关于继承的描述中,错误的是: A. 除了父类的私有方法,子类可以使用父类的所有方法 B. 凡是接受父类作为参数的函数,也可以接受该类的子类 C. 子类继承了父类的构造函数 D. 在子类可以调用父类的构造函数简答题(共 个小题,每题 简答题 共 2 个小题 每题 10 分,共 20 分) 共1. 请说明下面的这段程序有什么错误?public class Wrong1 { public int test(int i) { if (i>90) { return 0; } if (i>0) { return 1; } } }2. 请简述类 class 前的 public 修饰符和类成员(包括变量和方法)前的 public 修饰符分别表示 什么含义?编程题(20 分) 编程题已知有一个整数数组 arr, 请用两种 for 循环打印出该数组中的所有数据 (在下面的程序中补 充),两种写法各 10 分.public class Exam1 { public static void main(String[] args) {int[] arr = {3,34,6,3,57,234,346,454,342,224,56,7,54,22,345,6}; //打印出 arr 中的所有元素 } }。
数据结构真题2009年下半年(总分:124.98,做题时间:90分钟)一、{{B}}单项选择题{{/B}}(总题数:15,分数:30.00)1.按值可否分解,数据类型通常可分为两类,它们是 ( )(分数:2.00)A.静态类型和动态类型B.原子类型和表类型C.原子类型和结构类型√D.数组类型和指针类型解析:[解析] 按“值”是否可分解,可将数据类型划分为两类:原子类型,其值不可分解;结构类型,其值可分解为若干个成分。
2.对于三个函数f(n)=2008n3+8n2+96000,g(n)=8n3+8n+2008和h(n)=8888nlogn+3n2,下列陈述中不成立的是 ( )(分数:2.00)A.f(是O(g()B.g(是O(f()C.h(是O(nlog √D.h(是O(n2)解析:[解析] 当n充分大时,由题意可得:f(n)与n3是同阶的,g(n)与n3是同阶的,h(n)与n2是同阶的。
所以f(n)=O(g(n)),g(n)=O(f(n)),h(n)=O(n2)。
3.指针p、q和r依次指向某循环链表中三个相邻的结点,交换结点*q和结点*r在表中次序的程序段是( ) (分数:2.00)A.p—>next=r; q—>next=r—>next; r—>next=q; √B.p—>next=r; r—>next=q; q—>next=r—>next;C.r—>next=q; q—>next=r—>next; p—>next=r;D.r—>next=q; p—>next=r; q—>next=r—>next;解析:4.若进栈次序为a,b,e,且进栈和出栈可以穿插进行,则可能出现的含3个元素的出栈序列个数是 ( ) (分数:2.00)A.3B.5 √C.6D.7解析:5.假设以数组A[n]存放循环队列的元素,其头指针front指向队头元素的前一个位置、尾指针rear指向队尾元素所在的存储位置,则在少用一个元素空间的前提下,队列满的判定条件为 ( )(分数:2.00)A.rear==frontB.(front+1)%n==rearC.rear+1==frontD.(rear+1)%n==front √解析:[解析] 在循环队列中,在少用一个元素空间的前提下,可约定入队前,测试尾指针在循环意义下加1后是否等于头指针,若相等则认为队满。
2009年9月全国计算机等级考试二级笔试试卷Java语言程序设计(考试时间90分钟,满分100分)一、选择题(每小题2分,共70分)(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)下列选项中不属于结构化程序设计原则的是A)可封装D)自顶向下C)模块化D)逐步求精(7)软件详细设计产生的图如下:该图是A)N-S图B)PAD图C)程序流程图D)E-R图(8)数据库管理系统是A)操作系统的一部分B)在操作系统支持下的系统软件C)一种编译系统D)一种操作系统(9)在E-R图中,用来表示实体联系的图形是A)椭圆图B)矩形C)菱形D)三角形(10)有三个关系R,S和T如下:其中关系T由关系R和S通过某种操作得到,该操作为A)选择B)投影C)交D)并(11)用于设置组件大小的方法是A)paint( )B)setSize( )C)getSize( )D)repaint( )(12)点击窗口内的按钮时,产生的事件是A)MouseEventB)WindowEventC)ActionEventD)KeyEvent(13)AWT中用来表示对话框的类是A)FontB)ColorC)PanelD)Dialog(14)下列运算符中,优先级最高的是A)+=B)= =C)&&D)++(15)下列运算结果为1的是A)8>>1B)4>>>2C)8<<1D)4<<<2(16)下列语句中,可以作为无限循环语句的是A)for(;;) {}B)for(int i=0; i<10000;i++) {}C)while(false) {}D)do {} while(false)(17)下列表达式中,类型可以作为int型的是A)“abc”+”efg”B)“abc”+‟efg‟C)…a‟+‟b‟D)3+”4”(18)阅读下列程序Public class Test implements Runnable{Private int x=0;Private int y=o;boolean flag=true;Public static void main(string[ ] args) {Test r =new Test( );Thead t1=new Thead(r);Thead t2=new Thead(r);t1.start( );t2.start( );}Public void run(){While(flag) {x++;y++;system.out.println(“(” +x_ “,”+y+”)”);if (x>=10)flag=false;}}}下列对程序运行结果描述的选项中,正确的是A)每行的(x,y)中,可能有;每一对(x,y)值都出现两次。
………………………………装………………………………订…………………………………线………………………………课程________________________班级________________________姓名__________________________学号________________________ ………………………………密………………………………封…………………………………线………………………………安徽工业大学试题纸(一)题号一二三四五六七八九十十一十二十三十四十五十六十七十八十九二十总分得分2009~2010学年第一学期期末考试《JAVA程序设计A》试卷(A)一、单项选择题(本大题共20小题,每小题1.5分,共30分)。
在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项的字母填在题中的括号内。
1、编译Java源程序文件产生的字节码文件的扩展名为( )。
A. .javaB. .classC. .htmlD. .exe2、以下对派生类的描述中不正确的是()。
A、一个派生类可以作为另一个派生类的基类B、Java中一个派生类只有一个基类C、具有继承关系时,子类不能定义与父类同名的成员变量和方法D、生成派生类对象时,先调用基类构造方法然后再调用派生类构造方法3、下列程序的输入结果是()。
StringBuffer buf1=new StringBuffer(20);buf1.append("student");System.out.println(buf1.length() + ","+ buf1.capacity());A.20,20 B.7,20 C.0,20 D.0,04、设x=40 则执行y=(++x)+(x++)+1后,x,y的结果分别为( )A、42,80B、41,81C、43,82D、42,835、在编写Java Application程序时,若需要使用到标准输入输出语句,必须在程序的开头写上( )语句。
2009年4月全国计算机等级考试二级Java模拟试卷及答案一一、选择题1.两个关系在没有公共属性时,共自然连接操作表现为()A结果为空关系B无意义的操作C等值连接操作D笛卡尔操作2.一个栈的入栈序列是1,2,3,…,n,其输出序列为P1,P2,P3,…,Pn,若P1=n,则P1为()A.iB.n=iC.n-i+1D.不确定3. 用黑盒技术设计测试用例的方法之一为()A.因果图B.逻辑覆盖C.循环覆盖D.基本路径测试4. 在数据库设计的四个阶段中,为关系模式选择存取方法(建立存取路径)应该是在()阶段。
A.需求分析B.概念设计C.逻辑设计D.物理设计6. 在关系数据库模型中,通常可以把()称为属性,其值称为属性值。
A.记录B.基本表C.模式D.字段7. 结构化程序设计的一种基本方法是()A.筛选法B.递归法C.归纳法D.逐步求精法8. 源程序中应包含一些内部文档,以帮助阅读和理解源程序,源程序的内部文档通常包括选择合适的标识符、注解和()A.程序的视觉组织B.尽量不用或少用GOTO语句C.检查输入数据的有效性D.设计良好的输出报表9. 软件详细设计的主要任务是确定每个模块的()A.算法和使用的数据结构B.外部接口C.功能D.编程10. 在C+ +程序中,对象之间的相互通信通过()A.继承实现B.调用成员函数实现C.封装实现D.函数重载实现11.下面说法哪些是正确的( )A.Applet可以访问本地文件B.对static方法的调用需要类实例C.socket类在ng中D.127.0.0/1地址代表本机12.下面说法不正确的是( )A.Java中线程是抢占式的B.Java中线程是分时的C.Java中的线程可以共享数据D.Java中的线程可以共享代码13.下面属于Java线程同步方法的方法有( )A.joiny()B.run()C.wait()D.destroy()14.下列哪个方法可用于创建一个可运行的类( )A.public class X implements Runable{ public void run(){......} }B.public class X implements Thread{ public void run(){......} }C.public class X implements Thread{ public int run(){......} }D.public class X implements Runable{ protected void run(){......} }15.下列说法不正确的是( )A.IOException必须被捕获或抛出B.java语言会自动初始化变量的值C.java语言不允许同时继承一个类并实现一个接口D.java语言会自动回收内存中的垃圾16.Java程序的执行过程中用到一套JDK工具,其中java.exe是指( )A.Java文档生成器B.Java解释器C.Java编译器D.Java类分解器17.Java语言中,下列标识符错误的是( )A.—sys1B.&—mC.ID.40name18.在Java中,属于整数类型变量的是( )A.singleB.doubleC.byteD.char19.Applet类的直接父类是( )ponent类B.Container类C.Frame类D.Panel类20.Frame的默认的布局管理器是下列哪一个( )A.FlowLayoutB.BorderLayoutC.GridLayoutD.CardLayout21.在下列事件处理机制中哪个不是机制中的角色( )A.事件B.事件源C.事件接口D.事件处理者22.下列语句片段int a=10,b=4,c=20,d=6;System.out.println(a++*b+c*--d);的结果为( )A.144B.28C.140D.不能执行23.下列语句片段:int a=-67,b=116,c=78;int d=~a|b&c;System.out.println(d)的结果为( )A.70B.67C.78D.5624.对象使用时,下面描述错误的是( )A.通过“.”运算符调用成员变量和方法B.通过成员变量的访问权限设定限制自身对这些变量方法的调用C.将一个对象申明为类的成员时,必须在使用前为其分配内存D.在方法中使用对象作为参数时,采用引用调用25.执行下列代码后,哪个结论是正确的String[]s=new String[10];A.s[10]为″″B.s[9]为nullC.s[0]为未定义D.s.length为10126.Java编程所必须的默认引用包为( )A.java.sys包ng包C.java.new包D.以上都不是27.定义一个类名为“MyClass.java”的类,并且该类可被一个工程中的所有类访问,那么该类的正确声明应为:( )A.private class MyClass extends ObjectB.class MyClass extends ObjectC.public class MyClassD.private class MyClass extends Object28.内部类是在一个类内嵌套定义的类。
2009年9月国家二级(JA V A)笔试真题试卷(题后含答案及解析) 题型有:1. 选择题 2. 填空题选择题(每小题2分,共70分)下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上。
1.下列数据结构中,属于非线性结构的是( )。
A.循环队列B.带链队列C.二叉树D.带链栈正确答案:C解析:线性结构是指数据元素只有一个直接前驱和直接后驱,线性表是线性结构,循环队列,带链队列和栈是指对插入和删除有特殊要求的线性表,是线性结构。
而二叉树是非线性结构。
2.下列数据结构中,能够按照“先进后出”原则存取数据的是( )。
A.循环队列B.栈C.队列D.二叉树正确答案:B解析:栈是一种特殊的线性表,其插入和删除运算都只在线性表的一端进行,而另一端是封闭的。
可以进行插入和删除运算的一端称为栈顶,封闭的一端称为栈底。
栈顶元素是最后被插入的元素,而栈底元素是最后被删除的。
因此,栈是按照先进后出的原则组织数据的。
3.对于循环队列,下列叙述中正确的是( )。
A.队头指针是固定不变的B.队头指针一定大于队尾指针C.队头指针一定小于队尾指针D.队头指针可以大于队尾指针,也可以小于队尾指针正确答案:D解析:循环队列是把队列的头和尾在逻辑上连接起来,构成一个环。
循环队列中首尾相连,分不清头和尾,此时需要两个指示器分别指向头部和尾部。
插入就在尾部指示器的指示位置处插入,删除就在头部指示器的指示位置删除4.算法的空间复杂度是指( )。
A.算法在执行过程中所需要的计算机存储空间B.算法所处理的数据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的临时工作单元数正确答案:A解析:一个算法的空间复杂度一般是指执行这个算法所需的存储空间。
一个算法所占用的存储空间包括算法程序所占用的空间,输入的初始数据所占用的存储空间及算法执行过程中所需要的额外空间。
5.软件设计中划分模块的一个准则是( )。
2009年(上)全国信息技术水平考试计算机程序设计技术(JAVA语言)理论考试试卷一、选择题1.一个Java程序运行从上到下的环境次序是______A.操作系统、Java程序、JRE/JVM、硬件B.JRE/JVM、Java程序、硬件、操作系统C.Java程序、JRE/JVM、操作系统、硬件D.Java程序、操作系统、JRE/JVM、硬件2.下面代码的运行输出结果是______public class example{public static void main(String args[]){int x=O:if(x>O)x=l:switch(X){case l:System.out.println(1):case 0:System.out.println(0):case 2:System.out.println(2):break:{ case 3 : System.out.println(3):default:System.out.println(4):break:}}}A.0 B.4 C. 2 D. 12 3 3 O3.下列选项中的那个关键字通常用来对对象进行加锁,该标记使得对对象的访问是排他的。
______A.transient B.synchronizedC.serialize D.static4.下列关于变量及其范围的陈述中不正确的是______A.实例变量是类的成员变量。
B.实例变量用关键字static声明。
C.在方法中定义的局部变量在该方法被执行时创建。
D.局部变量在使用前必须被初始化。
5.下列程序片断可能发生错误的是____A.String 2=”Welcome to our school”;String t=”thanks”;String k=s+t;B.String s=”Welcome to our school”;String standard=s.toUpperCase 0;C.String s=”Welcome to our school”;String t;t=S[3]+”again”;D.String s=”Welcome to our school”;String t=s+”school”;6.在一个Java源文件中定义了3个类和15个方法,编译该Java源文件时会产生____个字节码文件,其扩展名是____。
全国计算机等级考试二级JAVA机试真题2009年9月(总分:100.00,做题时间:90分钟)一、基本操作题(总题数:1,分数:30.00)1.注意:下面出现的“考生文件夹”均为%USER%。
在考生文件夹中存有文件名为Java_1.java的文件,该程序是不完整的,请在注释行“//**********Found**********”下一行语句的下画线地方填入正确内容,然后删除下画线,请勿删除注释行或改动其他已有语句内容。
存盘时文件必须存放在考生文件夹下,不得改变原有文件的文件名。
本题的要求是:使程序按下列格式打印。
欢迎你参加Java考试注意:在输出的字符串中不含有空格。
给定源程序://用一个打印语句输出多行结果public class Java_1public static void main(string args[])//*********Found********______("欢迎/n你/n参加/nJava/n考试");(分数:30.00)__________________________________________________________________________________________ 正确答案:(第1处:System.out.println或System.out.print)解析:[解析] 第1处:在屏幕上打印输出,需填入System.out.println或System.out.print。
二、简单应用题(总题数:1,分数:40.00)2.注意:下面出现的“考生文件夹”均为%USER%。
在考生文件夹中存有文件名为Java_2.java的文件,该程序是不完整的,请在注释行“//**********Found**********”下一行语句的下画线地方填入正确内容,然后删除下画线,请勿删除注释行或改动其他已有语句内容。
存盘时文件必须存放在考生文件夹下,不得改变原有文件的文件名。
一、单选题(每题2分,共30分)
1.以下数据结构中,()是非线性数据结构。
A.树
B.字符串
C.队
D.栈
2.下面算法的时间复杂度为()
int f(int n)
if (n==0 || n==1)
return 1;
else return n * f(n-1);
A.O(1)
B.O(n)
C.O(n的平方)
D.O(n!)
3.下述哪一条是Array这种数据结构的优点?()
A.存储密度大
B.插入运算方便
C.删除运算方便
D.可方便地用于各种逻辑结构的存储表示
4.下面关于字符串的叙述中,哪一个是不正确的?()
A.串是字符的有限序列
B.空串是由空格构成的串
C.模式匹配是字符串的一种重要运算
D.串既可以采用顺序存储,也可采用链式存储5.在无序数组中,允许重复会导致()。
A.所有操作时间都会增加
B.总会增加插入时间
C.在某些情况下查找时间的增加
D.有时会减少插入时间
6.若某数据结构最常用的操作是存取任一指定序号的元素和在尾部进行插入和删除运算,则利用()存储方式最节省时间。
A.Array
B.双链表
C.带头结点的双循环链表
D.单循环链表
7.非空的循环单链表的尾结点p满足()。
A.p.next==first
B.p.next == null
C.p == null
D.p == first
8.在单链表指针为p的结点之后插入指针为s的结点,正确的操作是:()
A.p.next = s; s.next = p.next;
B.s.next = p.next;p.next = s;
C.p.next = s; p.next = s.next;
D.p.next = s.next; p.next = s;
9.有六个元素6,5,4,3,2,1.顺序进栈。
问下列哪一个不是合法的出栈序列?()
A.5 4 3 6 1 2
B.4 5 3 1 2 6
C.3 4 6 5 2 1
D.2 3 4 1 5 6
10.在Hanoi塔问题中,若A塔上有3片圆盘。
都要搬到C塔上去。
则下列语句()是错误的。
11.归并排序的主要缺点是()。
A.没有递归
B.使用更多的存储空间
C.尽管比插入算法快,但是它比快速排序慢得多
D.需要7次才能完成工作
12.树最适合用来表示()
A.有序数据元素
B.无序数据元素
C.元素之间具有分支层次关系的数据
D.元素之间无联系的数据
13.引入二叉树的主要目的是()
A.加快查找结点的前驱或后继的速度
B.能较快地进行插入与删除
C.为了能方便的找到双亲
D.使遍历的结果唯一
14.要连通具有N个顶点的有向图,至少需要()条边。
A.n-1
B.n
C.n+1
D.2n
15.下列排序算法中,在待排序数据已有序时,花费时间最少的是()排序。
A.插入
B.冒泡
C.快速
D.选择
二、填空题(每题2分,共20分)
1.在一个长度为n的顺序表中第i个元素(1<= i <=n)之前插入一个元素时,需向后移动---
元素。
2.对于一个具有n个结点的单链表,在已知的结点*p后插入一个新结点的时间复杂度为
---,在给定值为x的结点后插入一个新结点的时间复杂度为---。
3.顺序存储结构是通过————表示元素之间的关系的;链式存储结构是通过——表示元
素之间的关系的。
4.栈是操作——的数据结构,其运算遵循——的原则。
5.向空队列中插入15,25,35和45.然后移除三个数据项,队列中剩下的数据项是——。
6.如果用户在如下函数:
int triangle(int n)
{
if (n == 1)
return 1;
else
return (n + triangle(n-1));
}
7.有20个结点的完全二叉树中,根结点在第0层,第4层有——个结点。
8.求最短路径的Di jkstra算法的时间复杂度为——。
9.每次从无序表中挑选一个最小或最大元素,把它交换到有序表的一端,这种排序方法叫
做——排序。
10.当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取
线性表中的元素时,应采用——存储结构。
三、算法题(共3题,20分)
1.阅读下列程序,完成如下任务:
(1)描述func的功能:(2分)
(2)将程序改写为递归方式。
(4分)
int func(int n) {
int result = 0;
while(n > 0) {
result += n;
--n;
}
return result;
}
2.阅读下列二分查找的递归算法,填空。
(6分,每空2分)
//说明
//在数组A中,在索引low至索引high范围内,查找与k相同的元素
//若查找成功,返回与k匹配的元素之索引
//否则返回-1
int BinarySearch(ElemType A[], int low, int high, ElemType k)
{
if ((1))
{
int mid = (low + high)/2;
if ( (2) ) //查找成功,返回元素的下标
return mid;
else if (k < A[mid])
return BinarySearch(A, low, mid – 1, k);//在左子表上继续上查找
else //在右子表上继续查找
return 3)
}
else
return -1; //查找失败,返回-1
}//end of function
(1) (2) (3)
3.若用二叉链表作为二叉树的存储表示,试针对以下问题编写递归算法。
(8分)
算法要求:以二叉树为参数,交换每个结点的左子女的右子女。
四、应用题(共4题,30分)
1.已知一棵二叉树的先序遍历的结果是ABECDFGHIJ,中序遍历的结果是EBCDAFHIGJ,
(1)画出这棵二叉树。
(5分)
(2)给出这棵二叉的后序遍历序列。
(3分)
2.假定用于通信的电文公由8个字母c1,c2,c3,c4,c5,c7,c8组成,各字母在电文出现的频率
分别为5, 25, 3, 6, 10, 11, 36, 4。
(1)为这8个字母设计不等长Huffman编码(6分)
(2)计算该电文的总码长。
(2分)
3.无资源
4.无资源
淋哥打的~~~。