2015甘肃省JAVA版数据结构必过技巧
数据结构JAVA语言描述习题答案(刘小晶等主编).pdf总复习

0 1 2 3 4 5 6 7 8 9 10
55 01 23 14 36 82 68
19
11
3
1 1 2 1 2 1 4 1 ASL(成功)= (1*5+2*1+3+4)/9=14/9
3 V4 4 V5 5 V6
1 5 5 4
4
广度优先搜索法遍历序列: V1,V2,V3,V4,V5,V6
2
3
例题: 设有如下的两个网络, 分别用普里姆(Prim)算法 和克鲁斯卡尔(Kruskal)算法具体构造相应的最小生 成树。 写出过程。 a 5 6 1
b
5 6
c
6
5 4
d
3
2
[例1]假设按低下标优先存储整数数组 A9×3×5×8时, 第一个元素的字节地址是100,每个整数占 四个字节,问元素a3125的地址是什么? LOC(a3125)= ? 100+(3×3×5×8+1×5×8+2×8+5)×4 =1784
[ 例 2] 设有数组 A[1..8,1..10] ,数组的每个元素占 3 字节,数组从内存首地址 BA开始以列序为主序顺 序存放,求数组元素 a[5,8]的存储首地址.
8 9 10
55 01 23 14 68 11 82 36 19
1 1 2 1 3 6 2 5 1 查找次数 ASL(成功)=(4*1+2*2+3+5+6)/9=22/9
ASL(不成功)=(10+9+…+1+1)/11=56/11
例如: 关键字集合 { 19, 01, 23, 14, 55, 68, 11, 82, 36 }
Java数据结构和算法总结-字符串相关高频面试题算法

Java数据结构和算法总结-字符串相关⾼频⾯试题算法 前⾔:周末闲来⽆事,看了看字符串相关算法的讲解视频,收货颇丰,跟着视频讲解简单做了⼀下笔记,⽅便以后翻阅复习同时也很乐意分享给⼤家。
什么字符串在算法中有多重要之类的⼤路边上的客套话就不多说了,直接上笔记吧。
⼀、字符串java:String内置类型,不可更改。
(如需更改可考虑:StringBuffer, StringBuilder,char[]等)⼆、归类 字符串涉及到的相关题型通常会是以下⼏个⽅⾯:概念理解:字典序简单操作:插⼊删除字符、旋转规则判断(罗马数字转换是否是合法的整数、浮点数)数字运算(⼤数加法,⼆进制加法)排序、交换字符计数:变位词匹配(正则表达式、全串匹配、KMP、周期判断)动态规划(LCS、编辑距离、最长回⽂⼦串)搜索(单词变换、排列组合)三、例题1、交换:把⼀个只包含01的串排序,可交换任意两个数的位置,最少需要多少次交换? 思路:从两头往中间扫荡,扫荡过程中在左边遇到1就和右边遇到的0交换位置,直接到左有下标相遇时结束。
具体代码如下:1public static void main(String[] strs) {2int count = 0;3int[] arrays = new int[] {0, 0, 1, 1, 1, 0, 1, 0, 0, 1};4int left = 0;5int right = arrays.length - 1;6while (true) {7while (arrays[left] == 0) {8 left++;9 }10while (arrays[right] == 1) {11 right--;12 }13if (left >= right) {14break;15 } else {16int temp = arrays[left];17 arrays[left] = arrays[right];18 arrays[right] = temp;19 count++;20 }21 }22 Logger.println("交换次数:" + count);23for (int array : arrays) {24 Logger.print(array + ", ");25 }26 }清晰起见,交换次数和排序后的的字符串输出如下:交换次数:30, 0, 0, 0, 0, 1, 1, 1, 1, 1,2、字符串替换和复制:删除⼀个字符串所有的a,并且复制所有的b(字符数组⾜够⼤) 思路:详细思路见代码注释1public static void main(String[] strs) {2char[] input = new char[]{'a', 'b', 'c', 'd', 'a', 'f', 'a', 'b', 'c', 'd', 'b', 'b', 'a', 'b'};3char[] chars = new char[50];4for (int j = 0; j < input.length; j++) {5 chars[j] = input[j];6 }7 Logger.println("操作前:");8for (char c:chars9 ) {10 Logger.print(c + ", ");11 }13int countB = 0;14// 1、删除a,⽤n当做新下标,循环遍历数组,凡是不是a的元素都放到新下标的位置,由于新n增长慢,⽼下标i增长快,所以元素不会被覆盖。
数据结构(java)复习题及答案

数据结构(java)复习题及答案⼀、选择题1、数据结构在计算机内存中的表⽰是指____A__A.数据的存储结构 B.数据结构C. 数据的逻辑结构D.数据元素之间的关系2、若⼀个算法的时间复杂度⽤T(n)表⽰,其中n的含义是( A )A.问题规模 B.语句条数C.循环层数 D.函数数量3、下列选项中与数据存储结构⽆关的术语是( D )A.顺序表B.链表C.链队列D.栈4、已知循环队列的存储空间⼤⼩为m,队头指针front指向队头元素,队尾指针rear指向队尾元素的下⼀个位置,则向队列中插⼊新元素时,修改指针的操作是( D )A.rear=(rear-1)%m;B.front=(front+1)%m;C.front=(front-1)%m;D.rear=(rear+1)%m;5、栈和队列的共同点是__C______A.都是先进后出B.都是先进先出C.只允许在端点处插⼊和删除元素D.没有共同点6、已知⼀堆栈的进栈序列为1234,则下列哪个序列为不可能的出栈序列______D__A.1234B.4321C.2143D.41237、具有线性结构的数据结构是( C )A.树 B.图C.栈和队列 D.⼴义表8、假设以数组A[60]存放循环队列的元素,其头指针是front=47,当前队列有50个元素,则队列的尾指针值为( B )A.3 B.37C.50 D.979、若栈采⽤链式存储结构,则下列说法中正确的是( B )A.需要判断栈满且需要判断栈空B.不需要判断栈满但需要判断栈空C.需要判断栈满但不需要判断栈空D.不需要判断栈满也不需要判断栈空10、若⼀棵具有n(n>0)个结点的⼆叉树的先序序列与后序序列正好相反,则该⼆叉树⼀定是( C )A.结点均⽆左孩⼦的⼆叉树B.结点均⽆右孩⼦的⼆叉树C.⾼度为n的⼆叉树D.存在度为2的结点的⼆叉树11、若⼀棵⼆叉树中度为l的结点个数是3,度为2的结点个数是4,则该⼆叉树叶⼦结点的个数是( B )A.4B.5C.7D.812、在n个结点的线索⼆叉树中,线索的数⽬为_C_______A.n-1 B. nC.n+1D.2n13、⼀棵完全⼆叉树有1001个结点,其中有____B_____叶⼦结点A.500B.501C.503D.50515、⼀个有n个顶点的⽆向图最多有___C____条边。
JAVA数据结构——单链表的操作

单链表的操作方法一:package ch02;(1)建立结点类Node.javapublic class Node {public Object data;//存放结点数据值public Node next;//存放后继结点//无参构造函数public Node(){ this(null,null);}//只有结点值的构造函数public Node(Object data){ this(data,null);}//带有节点值和后继结点的构造函数public Node(Object data,Node next){ this.data=data;this.next=next;}}(2)建立链表及操作LinkList.javapackage ch02;import java.util.Scanner;public class LinkList implements IList{public Node head;//单链表的头指针//构造函数初始化头结点public LinkList(){head=new Node();}//构造函数构造长度为n的单链表public LinkList(int n,boolean Order) throws Exception{ this();if(Order)create1(n); //头插法顺序建立单链表elsecreate2(n); //尾插法逆序建立单链表}//头插法顺序建立单链表public void create1(int n) throws Exception{Scanner sc=new Scanner(System.in);System.out.println("请输入结点的数据(头插法):”);for(int i=0;i<n;i++){insert(0,sc.next());}}//尾插法逆序建立单链表public void create2(int n) throws Exception{Scanner sc=new Scanner(System.in);System. out.println("请输入结点的数据(尾插法):");for(int i=0;i<n;i++){insert(length(),sc.next());}}//将链表置空public void clear(){head.data=null;head.next=null;}//判断链表是否为空public boolean isEmpty(){return head.next==null;}//返回链表长度public int length(){Node p=head.next;int length=0;while(p!=null){p=p.next;length++;//返回P不空长度length加1}return length;}//读取并返回第i个位置的数据元素public Object get(int i) throws Exception {Node p=head.next;int j;//从首结点开始向后查找,直到9指向第i个结点或者p为nullfor(j=0;j<i&&p!=null;j++){ p=p.next;}if(j>i||p==null)//i不合法时抛出异常throw new Exception("第"+i+”个数据元素不存在”);return p.data;}//插入乂作为第i个元素public void insert(int i, Object x) throws Exception{ Node p=head;int j=-1;//寻找第i个结点的前驱i-1while(p!=null&&j<i-1){p=p.next;j++;}if(j>i-l||p==null)//i不合法时抛出异常throw new Exception("插入位置不合法”);Node s=new Node(x);s.next=p.next;p.next=s;}//删除第i个元素public void remove(int i) throws Exception{ Node p=head;int j=-1;while(p!=null&&j<i-1){//寻找第i-1 个节点p=p.next;j++;}if(j>i-1||p.next==null)throw new Exception("删除位置不合法”);p.next=p.next.next;}//返回元素x首次出现的位序号public int indexOf(Object x) {Node p=head.next;int j=0;while(p!=null&&!p.data.equals(x)){p=p.next;j++;if(p!=null)return j;elsereturn -1;}public void display(){Node p=head.next;while(p!=null){if(p.next==null)System.out.print(p.data);elseSystem.out.print(p.data+"f );p=p.next;}}}(3)建立测试类Test.javappublic class test {public static void main(String[] args) throws Exception { // TODO Auto-generated method stubScanner sc=new Scanner(System.in);boolean or;int xz,xx;System.out.println("请选择插入的方法:0、头插法,1、尾插法");xz=sc.nextInt();if(xz!=0)or=true;elseor=false;System. out.println("请插入的结点的个数:”);xx=sc.nextInt();LinkList L=new LinkList(xx,or);System.out.println("建立的链表为:");L.display();System.out.println();System.out.println("链表的长度:"+L.length());System. out.println(”请输入查找的结点的数据:”);Object x=sc.next();int position=L.indexOf(x);System.out.println("结点的数据为:"+x+"的位置为:"+position); System. out.println("请输入删除的结点的位置:”);int sr=sc.nextInt();L.remove(sr);L.display();System.out.println();System.out.println("链表的长度:"+L.length()); }品P rob I em & J a vs d oc / Declaration Q Error Log 里Con sole-M、、■=:termin8ted> test [3] [Java Application] C U &ert\Ad im i n i st rat o r\Ap p Data\L o cs I请选择插入.的方法:0、头插法,lv星插法请插入的特点的个数:请愉入结点的颓据(尾插法):A B C E D F建立的旌表为;A+B T C+E T D+F链表的长度:6请输入查找的结点的数据:结点的数据为:E的位置为:3请输入删除的结点的位置,R+B T E+DW道表的长度:S方法二(引入get和set方法)Package sy;import java.util.Scanner;//单链表的结点类public class Node {private Object data; //存放结点值private Node next; //后继结点的引用public Node() { //无参数时的构造函数this(null, null);}public Node(Object data) { // 构造值为data 的结点this(data, null);}public Node(Object data, Node next) {//构造值为data 和next 的结点构造函数this.data = data;this.next = next;}public Object getData() { return data;}public void setData(Object data) {this.data = data;}public Node getNext() { return next;public void setNext(Node next) { this.next = next;}}//实现链表的基本操作类public class LinkList {Node head=new Node();//生成一个带头结点的空链表//根据输入的一系列整数,以0标志结束,用头插法建立单链表public void creat() throws Exception {Scanner sc = new Scanner(System.in); //构造用于输入的对象for (int x=sc.nextInt(); x!=0; x=sc.nextInt()) //输入若干个数据元素的值(以0结束) insert(0, x);//生成新结点,插入到表头}//返回带头结点的单链表中第i个结点的数据域的值。
Java常见数据结构面试题(带答案)

Java常见数据结构⾯试题(带答案)1.栈和队列的共同特点是(只允许在端点处插⼊和删除元素)4.栈通常采⽤的两种存储结构是(线性存储结构和链表存储结构)5.下列关于栈的叙述正确的是(D)A.栈是⾮线性结构B.栈是⼀种树状结构C.栈具有先进先出的特征D.栈有后进先出的特征6.链表不具有的特点是(B)A.不必事先估计存储空间 B.可随机访问任⼀元素C.插⼊删除不需要移动元素D.所需空间与线性表长度成正⽐7.⽤链表表⽰线性表的优点是(便于插⼊和删除操作)8.在单链表中,增加头结点的⽬的是(⽅便运算的实现)9.循环链表的主要优点是(从表中任⼀结点出发都能访问到整个链表)10.线性表L=(a1,a2,a3,……ai,……an),下列说法正确的是(D)A.每个元素都有⼀个直接前件和直接后件B.线性表中⾄少要有⼀个元素C.表中诸元素的排列顺序必须是由⼩到⼤或由⼤到⼩D.除第⼀个和最后⼀个元素外,其余每个元素都有⼀个且只有⼀个直接前件和直接后件11.线性表若采⽤链式存储结构时,要求内存中可⽤存储单元的地址(D)A.必须是连续的B.部分地址必须是连续的C.⼀定是不连续的D.连续不连续都可以12.线性表的顺序存储结构和线性表的链式存储结构分别是(随机存取的存储结构、顺序存取的存储结构)13.树是结点的集合,它的根结点数⽬是(有且只有1)14.在深度为5的满⼆叉树中,叶⼦结点的个数为(31)15.具有3个结点的⼆叉树有(5种形态)16.设⼀棵⼆叉树中有3个叶⼦结点,有8个度为1的结点,则该⼆叉树中总的结点数为(13)17.已知⼆叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是(cedba)18.已知⼀棵⼆叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该⼆叉树的后序遍历为(DGEBHFCA)19.若某⼆叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是(gdbehfca)20.数据库保护分为:安全性控制、完整性控制、并发性控制和数据的恢复。
Java开发者应该掌握哪些提高工作效率的技巧

Java开发者应该掌握哪些提高工作效率的技巧作为一名 Java 开发者,在日常的工作中,我们常常面临着各种挑战和压力,如何提高工作效率成为了我们必须要思考和解决的问题。
掌握一些实用的技巧和方法,可以让我们在开发过程中更加得心应手,节省时间和精力,提高代码质量。
接下来,我将为大家分享一些 Java开发者应该掌握的提高工作效率的技巧。
一、熟练使用开发工具选择一款适合自己的集成开发环境(IDE)是提高效率的关键。
常见的 Java IDE 有 IntelliJ IDEA、Eclipse 和 NetBeans 等。
熟练掌握这些工具的快捷键和功能,可以大大提高编码速度。
以 IntelliJ IDEA 为例,它提供了丰富的快捷键,比如 Ctrl + Shift+ F 可以全局搜索,Ctrl + Alt + L 可以自动格式化代码,Ctrl + D 可以快速复制一行代码等。
学会自定义快捷键和设置个性化的开发环境,也能让我们在工作中更加舒适和高效。
二、善用版本控制系统版本控制系统(如 Git)是团队协作开发中不可或缺的工具。
它可以帮助我们跟踪代码的修改历史,方便回滚到之前的版本,也有助于解决代码冲突和多人协作开发时的协调问题。
熟练掌握 Git 的基本命令,如 git add、git commit、git push、git pull 等,能够让我们更加高效地管理代码。
同时,学会创建分支、合并分支以及处理冲突的技巧,可以避免在开发过程中出现混乱和错误。
三、代码规范和设计模式遵循良好的代码规范可以提高代码的可读性和可维护性。
统一的代码风格、合理的命名、适当的注释等都能让我们的代码更加清晰易懂。
设计模式是经过实践验证的解决方案,可以帮助我们解决常见的软件设计问题。
熟悉常见的设计模式,如单例模式、工厂模式、观察者模式等,并在合适的场景中应用它们,可以提高代码的质量和可扩展性。
四、学会调试和测试调试是解决代码问题的重要手段。
数据结构 java语言描述 第2版 pdf
数据结构 java语言描述第2版 pdf数据结构是计算机科学中非常重要的一个概念,它是指在计算机内存中组织和存储数据的方式。
在实际的软件开发中,数据结构的设计和选择直接影响到程序的性能和效率。
而在数据结构中,最常用的编程语言之一就是Java。
Java作为一种面向对象的编程语言,提供了丰富的数据结构实现方式。
在Java中,常见的数据结构包括数组、链表、栈、队列、树、图等。
这些数据结构在不同情况下有着不同的应用场景和效率表现。
在Java中,可以通过自定义类的方式来实现各种数据结构。
例如,可以定义一个Node类来表示链表的节点,或者定义一个TreeNode类来表示树的节点。
通过这种方式,可以灵活地组织和操作数据,实现各种复杂的数据结构。
除了自定义类之外,Java还提供了一些集合类来实现常见的数据结构。
例如,ArrayList和LinkedList类实现了动态数组和链表,Stack和Queue接口实现了栈和队列,HashMap和TreeMap类实现了哈希表和树等。
这些集合类提供了丰富的方法和功能,可以方便地进行数据操作和管理。
在实际的软件开发中,选择合适的数据结构对程序的性能和效率至关重要。
不同的数据结构适用于不同的场景,需要根据具体的需求和问题选择合适的数据结构。
同时,对数据结构的深入理解和熟练掌握也是提高编程能力的关键。
总的来说,Java语言提供了丰富的数据结构实现方式,通过选择合适的数据结构可以提高程序的性能和效率。
因此,在学习和使用Java语言时,需要深入理解数据结构的概念和原理,灵活运用各种数据结构来解决实际的问题。
希望通过对数据结构的学习和掌握,能够写出高效、优雅的Java程序。
java 算法题刷题技巧
java 算法题刷题技巧
一、引言
在当今时代,Java作为一种广泛应用于各个领域的编程语言,其重要性不言而喻。
而对于Java程序员来说,掌握算法技能更是至关重要。
本文将为你介绍Java算法题的刷题技巧,帮助你提高解题能力,更好地应对职场挑战。
二、Java算法题分类
1.数据结构题:这类题目主要考察对数据结构(如数组、链表、栈、队列、树、图等)的理解和应用。
2.算法思想题:这类题目考察对算法原理的理解,如排序、查找、递归、动态规划等。
3.编程实践题:这类题目注重实战,考察编程技巧和解决问题的能力,如设计模式、系统设计等。
三、刷题技巧
1.选择合适的题库:选择一个优质题库,可以让你在刷题过程中接触到更多高质量的题目。
2.制定学习计划:根据自己的实际情况,制定合理的学习计划,确保持续、稳定地学习。
3.解题方法:
a.分析题目:仔细阅读题目,理解题意,明确需求。
b.熟悉数据结构和算法:掌握常见数据结构和算法,并了解其在题目中的应用。
c.编写代码:根据题目需求,编写简洁、高效的Java代码解决问题。
4.复习与总结:刷题过程中,要及时复习所学知识,总结经验教训,巩固记忆。
四、实战经验分享
1.解题工具推荐:熟练使用一些解题工具,如LeetCode、牛客网、力扣等。
2.学习资源推荐:学习算法的过程中,可以参考一些经典书籍,如《算法导论》、《编程珠玑》等。
3.经验总结:多参加算法竞赛,多与同学、同行交流,不断提高自己的解题能力。
五、结语
掌握Java算法题的刷题技巧,有助于提高编程能力,更好地应对各种挑战。
数据结构学习心得(精选5篇)
数据结构学习心得(精选5篇)数据结构学习心得要怎么写,才更标准规范?根据多年的文秘写作经验,参考优秀的数据结构学习心得样本能让你事半功倍,下面分享【数据结构学习心得(精选5篇)】相关方法经验,供你参考借鉴。
数据结构学习心得篇1数据结构是计算机科学的核心基础之一,它涉及到如何有效地存储、处理和检索数据的问题。
作为一名想要成为一名优秀计算机科学家的人来说,学习数据结构是非常重要的。
在这篇文章中,我将分享我的学习心得,希望能够帮助你更好地理解数据结构。
1.学习数据结构的必要性在学习计算机科学中,数据结构是非常重要的一部分。
掌握数据结构可以让我们更好地理解计算机如何存储和处理信息,以及如何设计和实现算法。
无论我们未来从事什么样的职业,掌握数据结构都是必不可少的。
2.选择适合自己的学习方式我建议选择适合自己的学习方式。
我曾经试过很多种学习方式,包括阅读书籍、观看视频和参加课程。
最终,我发现最适合我的学习方式是阅读书籍和参加课程。
阅读书籍可以帮助我深入了解数据结构的原理,而参加课程则可以让我更好地理解实际应用。
3.理解数据结构的原理在学习数据结构时,我们需要花费大量的时间来理解各种数据结构的原理。
例如,在理解链表时,我们需要了解节点的概念、单向链表和双向链表的差异等等。
只有真正理解了数据结构的原理,我们才能更好地应用它们。
4.练习编程学习数据结构需要大量的编程练习。
只有通过实践,我们才能更好地理解数据结构的实际应用。
我建议通过编写代码来练习数据结构,例如使用Python、Java或C++等语言。
5.关注数据结构的应用在学习数据结构时,我们需要关注数据结构的应用。
例如,在算法竞赛中,我们需要使用各种数据结构来解决各种问题。
通过关注数据结构的应用,我们可以更好地理解它们在实际中的应用。
总之,学习数据结构需要耐心和毅力。
通过阅读书籍、参加课程、练习编程和关注数据结构的应用,我们可以更好地掌握数据结构,为成为一名优秀的计算机科学家打下坚实的基础。
数据结构教程java语言描述李春葆程序
数据结构教程java语言描述李春葆程序摘要:1.数据结构教程概述2.Java 语言描述数据结构的优势3.李春葆程序的特点与结构4.程序实例与应用领域5.学习建议与总结正文:数据结构教程是一门计算机科学课程,主要介绍数据结构的基本概念、原理和应用。
数据结构是计算机程序设计的基础,通过对数据进行组织、管理和操作,可以提高程序的效率和性能。
Java 语言作为一种广泛应用的编程语言,以其面向对象的特点,非常适合描述数据结构。
李春葆程序作为数据结构教程的实例,以Java 语言为基础,详细介绍了各种数据结构的应用。
Java 语言描述数据结构的优势在于,它具有良好的跨平台性、可移植性和安全性。
Java 语言支持多线程编程,可以更高效地处理并发问题。
此外,Java 拥有丰富的类库,为数据结构的学习和应用提供了便利。
李春葆程序以实例和应用为导向,涵盖了线性表、栈与队列、树与二叉树、图等数据结构。
每个数据结构都配有详细的说明、实例和操作方法。
程序中使用了许多经典的算法,如排序、查找等,使得学习者可以更好地理解数据结构的实际应用。
程序实例是李春葆程序的一个重要组成部分。
通过阅读和分析这些实例,学习者可以加深对数据结构的理解,提高编程技巧。
此外,李春葆程序还涉及了一些实际应用领域,如数据库、网络编程等,使学习者能够更好地将理论知识应用于实际问题。
在学习数据结构教程时,建议先理解基本概念和原理,然后通过编写程序实例来加深理解。
多进行实际操作,多思考数据结构的优缺点,以及在不同场景下的应用。
通过这样的学习方法,学习者可以更好地掌握数据结构的知识,提高编程能力。
总之,数据结构教程是计算机科学中非常重要的一门课程。
李春葆程序以Java 语言为基础,为学习者提供了一个优秀的实例。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点的个数是( B )。
A)9 B)11 C)15 D)不能确定
2、队列的操作的原则是( A )。
A)先进先出 B) 后进先出
C) 只能进行插入 D) 只能进行删除
3、若采用邻接矩阵法存储一个n个顶点的无向图,则该邻接矩阵是一个( D )。
A)上三角矩阵 B) 稀疏矩阵
C) 对角矩阵 D) 对称矩阵
4、线性表的链接实现有利于( A )运算。
A)插入 B)读元素
C)查找 D)定位
5、数据结构研究的内容是( D )。
A)数据的逻辑结构 B)数据的存储结构
C)建立在相应逻辑结构和存储结构上的算法 D)包括以上三个方面
6、下列序列中,执行第一趟快速排序后得到的序列是( A )。
A)[d,a,e,d,b]f[h,g] B) [c,e,a,d]f[h,g,b]
C) [g,a,e,c,b]f[d,h] D) [a,b,c,d,]f[e,g,h]
7、n个顶点的图的最小生成树必定( D ),是不正确的描述。
A)不唯一 B)权的总和唯一
C)不含回路 D)有n条边
8、在一个具有n个单元的顺序栈中,假定以地址低端(即0单元)作为栈底,以top作为栈
顶指针,当做出栈处理时,top变化为( C )。
A)top不变 B)top=0 C)top-- D)top++
9、设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a??11为第一个元素,
其存储地址为1,每元素占1个地址空间,则a85的地址为( B )。
A)13 B)33 C)18 D)40
10、二叉树第i(i≥1)层上至多有( C )结点。
A)2i B)2i C)2i-1 D)2i-1
11、下列序列中,执行第一趟快速排序后得到的序列是( A )。
A)[d,a,e,d,b]f[h,g] B) [c,e,a,d]f[h,g,b]
C) [g,a,e,c,b]f[d,h] D) [a,b,c,d,]f[e,g,h]
12、采用链结构存储线性表时,其地址( B )。
A)必须是连续的 B)连续不连续都可以
C)部分地址必须是连续 D)必须是不连续的
13、设一数列的顺序为1,2,3,4,5,6,通过栈结构不可能排成的顺序数列为( B )。
A)3,2,5,6,4,1 B)1,5,4,6,2,3
C)2,4,3,5,1,6 D)4,5,3,6,2,1