数据结构JAVA语言描述习题答案(刘小晶等主编).pdf总复习
数据结构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版》习题解答.
}
for (int i=0; i<mat.length; i++)//输出二维数组元素
{
for (int j=0; j<mat[i].length; j++)//i、j是行、列下标
System.out.print(" "+mat[i][j]);
System.out.println();
else
{
Node<E> p=this.head;
while (p.next!=null)
p = p.next;
p.next = list.head;
}
}
【习3.5】实验2.2复制单链表。
在SinglyLinkedList单链表类中,增加构造方法如下。
public SinglyLinkedList(SinglyLinkedList<E> list)//以单链表list构造新的单链表
{
p = new Node(element[i]);
p.next = create(element, i+1);
}
return p;
}
单链表的复制操作也可设计为以下的递归方法:
public SinglyLinkedList(SinglyLinkedList<E> list)//以单链表list构造新的单链表
图3.2p.next=p将改变结点间的链接关系
【习3.1】实验2.2由指定数组中的多个对象构造单链表。
在SinglyLinkedList单链表类中,增加构造方法如下。
public SinglyLinkedList(E[] element)//由指定数组中的多个对象构造单链表
(完整版)数据结构课后习题答案(可编辑修改word版)
第1 章绪论1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。
答案:数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。
如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。
数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。
在有些情况下,数据元素也称为元素、结点、记录等。
数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。
数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。
例如,学生基本信息表中的学号、姓名、性别等都是数据项。
数据对象:是性质相同的数据元素的集合,是数据的一个子集。
例如:整数数据对象是集合N={0,±1,±2,… },字母字符数据对象是集合C={‘A’,‘B’,… ,‘Z’,‘a’,‘b’,…,‘z’},学生基本信息表也可是一个数据对象。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。
逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。
因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。
存储结构:数据对象在计算机中的存储表示,也称为物理结构。
抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。
具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。
2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。
答案:例如有一张学生基本信息表,包括学生的学号、姓名、性别、籍贯、专业等。
每个学生基本信息记录对应一个数据元素,学生记录按顺序号排列,形成了学生基本信息记录的线性序列。
数据结构(Java版)习题解答
AI N D E X练习题答案第一章练习题答案(a) n+(n–1)+(n–2)+…+2+1=2)1(+ n n (b) n+(n–1)+(n–2)+…+2+1=2)1(+nnf(n)≦c.g(n) →f(n)=O(g(n))(a) f(n)=100n+9c=101, g(n)=n, n0=10得知f(n)=O(n)(b) f(n)=1000n2+100n–8c=2000, g(n)= n2, n0=1得知f(n)=O(n2)(c) f(n)=5*2n+9 n2+2c=10, n0=5得知f(n)=O(2n)f(n)≧c g(n) →f(n)=Ω(g(n)) (a) f(n)=3n+1c=2, n0=1, g(n)=n得知f(n)=Ω(n)(b) f(n)=100n2+4n+5c=10, n0=1, g(n)= n2得知f(n)=Ω(n2)(c) f(n)=8*2n+8n+16c=8, n0=1, g(n)= 2n得知f(n)=Ω(n2)c1.g(n)≦f(n)≦c2.g(n) →f(n)= Θ(g(n))(a) f(n)=3n+2c1=3, c2=6, n0=1得知f(n) = Θ (n)(b) f(n)=9n2+4n+2c1=9, c2=16, n0=1得知f(n) = Θ (n2)(c) f(n)=8n4+5n3+5c1=8, c2=20, n0=1得知f(n) = Θ (n4)A-2练习题解答第二章练习题答案1. 分别以行为主和以列为主说明之。
(a) 以行为主A(i, j)=l0+(i–1)*u2*d+(j–1)*d(b) 以列为主A(i, j)=l0+(j–1)*u1*d+(i–1)*d2. 以列为主A(i, j)=l0+(j–12)*md+(i–l1)dm=u1–l1+1=5–(–3)+1=9m=u2–l2+1=2–(–4)+1=7A(1, 1) =100+(1–(–4))*9+(1–(–3))=100+45+4=1493. 分别以行为主和以列为主的说明。
数据结构(java版)刘小晶:第2章 线性表-java版
作业布置
结束放映
……
2.2 线性表的顺序存储及其实现
数据结构(Java语言描述)
5. 顺序表类的描述
章节目录
public class SqList implements IList {
// 判空函数 public boolean isEmpty( ) { return curLen == 0; } // 求顺序表长度函数 public int length( ) { return curLen; } // 读取顺序表中第i个元素的函数 public Object get (int i) throws Exception { if (i < 0 || i > curLen – 1) throw new Exception("第" + i + "个元素不存在"); return listElem[i]; } }
listElem maxSize-1
作业布置
结束放映
21 18
0
30 75 42 56 87
curLen-1
21 18 30 75
0
66 42 56 87
curLen-1
for (int j = curLen; j > i; j--) listElem[j] = listElem[j - 1]; //后移 listElem[i] = x; // 插入x
结束放映
a 0 a1 …
a0 a1 …
ai-1
ai-1
ai
… an-1
ai
x
…
an-1
当前表的长度增加1
2.2 线性表的顺序存储及其实现
数据结构(Java语言描述)
数据结构课后习题答案
数据结构课后习题答案数据结构习题集答案第1章绪论1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。
解:数据是对客观事物的符号表示。
在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
数据对象是性质相同的数据元素的集合,是数据的一个子集。
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
存储结构是数据结构在计算机中的表示。
数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。
是对一般数据类型的扩展。
1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。
解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。
一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。
抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。
在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。
1.3 设有数据结构(D,R),其中{}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r = 试按图论中图的画法惯例画出其逻辑结构图。
解:1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。
解:ADT Complex{数据对象:D={r,i|r,i 为实数} 数据关系:R={} 基本操作:InitComplex(&C,re,im)操作结果:构造一个复数C ,其实部和虚部分别为re 和imDestroyCmoplex(&C)操作结果:销毁复数CGet(C,k,&e)操作结果:用e 返回复数C 的第k 元的值Put(&C,k,e)操作结果:改变复数C的第k元的值为eIsAscending(C)操作结果:如果复数C的两个元素按升序排列,则返回1,否则返回0IsDescending(C)操作结果:如果复数C的两个元素按降序排列,则返回1,否则返回0Max(C,&e)操作结果:用e返回复数C的两个元素中值较大的一个Min(C,&e)操作结果:用e返回复数C的两个元素中值较小的一个}ADT ComplexADT RationalNumber{数据对象:D={s,m|s,m为自然数,且m不为0}数据关系:R={}基本操作:InitRationalNumber(&R,s,m)操作结果:构造一个有理数R,其分子和分母分别为s和m DestroyRationalNumber(&R)操作结果:销毁有理数RGet(R,k,&e)操作结果:用e返回有理数R的第k元的值Put(&R,k,e)操作结果:改变有理数R的第k元的值为eIsAscending(R)操作结果:若有理数R的两个元素按升序排列,则返回1,否则返回0IsDescending(R)操作结果:若有理数R的两个元素按降序排列,则返回1,否则返回0Max(R,&e)操作结果:用e返回有理数R的两个元素中值较大的一个Min(R,&e)操作结果:用e返回有理数R的两个元素中值较小的一个}ADT RationalNumber1.5 试画出与下列程序段等价的框图。
数据结构Java版习题解答
else
return binarySearch(table, value, mid+1, high);//查找范围缩小到后半段
}
return -1;
}
【习2.5】二叉排序树查找的递归算法。
数据结构Java版习题解答
第1章
【习1.1】实验哥德巴赫猜想。
【习1.2】实验杨辉三角形。
【习1.3】实验金额的中文大写形式。
【习1.4】实验下标和相等的数字方阵。
输出下列方阵(当n=4时)。
1267或13410
3581325911
491214681215
101115167131416
采用二维数组实现。二维数组中,每一条斜线上各元素下标和相等,如图所示。
图1.2下标和相等的数字方阵算法描述
程序如下。
public class Upmat
{
public static void main(String args[])
{
表1.1int n=4;ength; j++)8.2.18.2.1
ength, ;
for (int j=0; j<[i].length; j++)
[j][i]=[i][j];
return trans;
}
第2章
【习2.1】画出3个结点的各种形态的树和二叉树。
3个结点的树有2种形态,3个结点的二叉树有5种形态,如图所示。
图2.23个结点树和二叉树的形态
【习2.1】找出分别满足下面条件的所有二叉树。
1先根遍历序列和中根遍历序列相同:右单支二叉树,如图(a)所示。
数据结构java语言描述课后答案
数据结构 java 语言描述课后答案【篇一:数据机构第一章—— java 语言描述第 1 章绪论习题参考答案】概念题1.试述下列各组概念:⑴数据、数据元素、数据项⑵ 数据结构、数据的逻辑结构、数据的存储结构⑶ 数据类型、数据操作⑷ 算法、算法的时间复杂度、算法的空间复杂度参考答案 : 略2 .试述数据结构研究的3 个方面的内容。
参考答案:数据结构研究的 3 个方面分别是数据的逻辑结构、数据的存储结构和数据的运算(操作)。
3.试述集合、线性结构、树型结构和图型结构四种常用数据结构的特性。
参考答案 :集合结构:集合中数据元素之间除了“同属于一个集合”的特性外,数据元素之间无其它关系,它们之间的关系是松散性的。
线性结构:线性结构中数据元素之间存在“一对一”的关系。
即若结构非空,则它有且仅有一个开始结点和终端结点,开始结点没有前趋但有一个后继,终端结点没有后继但有一个前趋,其余结点有且仅有一个前驱和一个后继。
树形结构:树形结构中数据元素之间存在“一对多”的关系。
即若结构非空,则它有一个称为根的结点,此结点无前驱结点,其余结点有且仅有一个前驱,所有结点都可以有多个后继。
图形结构:图形结构中数据元素之间存在“多对多”的关系。
即若结构非空,则在这种数据结构中任何结点都可能有多个前驱和后继。
4 .设有数据的逻辑结构的二元组定义形式为b=(d,r) ,其中d={a1,a2,?,an},r={ai,ai+1| i=1,2,?,n-1},请画出此逻辑结构对应的顺序存储结构和链式存储结构的示意图。
参考答案 :顺序存储结构示意图如下:0 1 2 ?n-2 n-1链式存储结构示意图如下:?5 .设一个数据结构的逻辑结构如图 1.9 所示,请写出它的二元组定义形式。
图 1.9 第 5 题的逻辑结构图参考答案 :它的二元组定义形式为 b= (d ,r ),其中d={k1,k2,k3,k4,k5,k6,k7,k8,k9},r=k1,k3,k1,k8,k2,k3k2,k4,k2,k5,k3,k9,k4,k6,k4,k7,k5,k6,k8,k9,k9,k7 } 。
《数据结构、算法与应用(C++语言描述)》习题参考答案doc.
第1章概论1.数据、数据元素、数据结构、数据类型的含义分别是什么?数据:对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并由计算机程序处理的符号的总称。
数据元素:数据的基本单位,在计算机程序中通常作为一个整体考虑。
数据结构:数据元素之间的关系+运算,是以数据为成员的结构,是带结构的数据元素的集合,数据元素之间存在着一种或多种特定的关系。
数据类型:数据类型是用来区分不同的数据;由于数据在存储时所需要的容量各不相同,不同的数据就必须要分配不同大小的内存空间来存储,所有就要将数据划分成不同的数据类型。
数据类型包含取值范围和基本运算等概念。
2.什么是数据的逻辑结构?什么是数据的物理结构?数据的逻辑结构与物理结构的区别和联系是什么?逻辑结构:数据的逻辑结构定义了数据结构中数据元素之间的相互逻辑关系。
数据的逻辑结构包含下面两个方面的信息:①数据元素的信息;②各数据元素之间的关系。
物理结构:也叫储存结构,是指逻辑结构的存储表示,即数据的逻辑结构在计算机存储空间中的存放形式,包括结点的数据和结点间关系的存储表示。
数据的逻辑结构和存储结构是密不可分的,一个操作算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采与的存储结构。
采用不同的存储结构,其数据处理的效率是不同的。
因此,在进行数据处理时,针对不同问题,选择合理的逻辑结构和存储结构非常重要。
3.数据结构的主要操作包括哪些?对于各种数据结构而言,他们在基本操作上是相似的,最常用的操作有:●创建:建立一个数据结构;●清除:清除一个数据结构;●插入:在数据结构中增加新的结点;●删除:把指定的结点从数据结构中删除;●访问:对数据结构中的结点进行访问;●更新:改变指定结点的值或改变指定的某些结点之间的关系;●查找:在数据结构中查找满足一定条件的结点;●排序:对数据结构中各个结点按指定数据项的值,以升序或降序重新排列。
4.什么是抽象数据类型?如何定义抽象数据类型?抽象数据类型(Abstract Data Type 简称ADT)是指一个数学模型以及定义在此数学模型上的一组操作。
《Java语言程序设计与数据结构(基础篇)》第11版第一章复习题答案
《Java语⾔程序设计与数据结构(基础篇)》第11版第⼀章复习题答案1.2.1答案:硬件是指计算机中可见的物理部分,⽽软件提供不可见的指令。
1.2.2答案:中央处理器(CPU)、内存、存储设备、输⼊设备和输出设备、通信设备。
1.2.3答案:Central Processing Unit1.2.4答案:Hz(赫兹)、MHz(兆赫兹)、GHz(吉赫兹)1.2.5答案:⽐特就是⼆进制数字系统中的数,计算机中字节是最⼩的存储单元1.2.6答案:计算机的内存由⼀个有序的字节序列组成,⽤于存储程序及程序需要的数据。
RAM代表随机访问存储器。
每个字节都有唯⼀的地址,使⽤这个地址确定字节的位置,以便于存储和获取数据,因为可以按任意顺序存取字节,所以内存也被称为:字节1.2.8答案:B、KB、MB、GB随机访问存储器(RAM)。
1.2.7答案1.2.9答案:内存和永久存储设备的不同是计算机的内存是⼀种易失的数据保存形式:断电时存储在内存中的信息就会丢失。
程序和数据被永久的存放在存储设备上,当计算机确实要⽤他们时再移⼊内存,因为从内存读取⽐从存储设备读取要快得多。
1.3.1答案:机器语⾔1.3.2答案:汇编语⾔(assembly language)就是使⽤短的描述性单词(助记符)来表⽰每⼀条机器语⾔指令。
由于计算机不理解汇编语⾔,所以需要使⽤⼀种称为汇编器的程序将汇编语⾔程序转换为机器代码。
1.3.3答案:⾼级编程语⾔类似于英语,易于学习和使⽤,⾼级语⾔中的指令称为语句。
源程序就是⽤⾼级编程语⾔编写的程序。
1.3.4答案:解释器和编译器就是可以将源程序翻译成可执⾏的机器代码的编程⼯具。
1.3.5答案:解释器和编译器的区别就是:解释器是从源代码中读取⼀条语句,将其翻译成为机器代码或者虚拟机器代码,然后⽴刻运⾏,编译器就是将整个源代码翻译成为机器代码⽂件,然后执⾏该机器代码⽂件。
1.4.1答案:操作系统(Operaing System OS)是运⾏在计算机上的重要的程序,他可以管理和控制计算机的活动。
数据结构JAVA语言描述习题答案(刘小晶等主编).第7章 排序(Java版)
结束放映
12
7.1排序的基本概念
(2) 交换类
章节目录 作业布置
数据结构(Java语言描述)
通过“交换”无序序列中的记录从
而得到其中关键字最小或最大的记录,
结束放映
并将它加入到有序子序列中,以此方法
增加记录的有序子序列的长度。
13
7.1排序的基本概念
(3) 选择类
章节目录 作业布置
数据结构(Java语言描述)
无序序列 r[i..n-1]
结束放映
有序序列r[0..i]
21
无序序列 r[i+1..n-1]
7.2插入排序
数据结构(Java语言描述)
实现“一趟插入排序”可分三步进行:
章节目录
1.在r[0..i-1]中查找r[i]的插入位臵,
作业布置
r[0..j].key r[i].key < r[j+1..i-1].key; 2.将r[j+1..i-1]中的所有记录均后移 一个位臵;
7
7.1排序的基本概念
关键字
章节目录
数据结构(Java语言描述)
作业布置
结束放映
是数据元素(或记录)中某个数据项 的值,用以标识(识别)一个数据元素 (或记录)。
若此关键字可以识别唯一的一个记录, 则称之谓“主关键字”。 若此关键字能识别若干记录,则称 之谓“次关键字”。
8
7.1排序的基本概念
数据结构(Java语言描述)
7.2.1 直接插入排序-不带监视哨的算法
章节目录
基本条件:
待排序记录依次存放在数组r[0..n-1]中。
作业布置
结束放映
思想:
先将第0个记录组成一个有序的子表, 然后依次将后面的记录插入到这子表中, 且一直保持它的有序性。
数据结构教程(Java)习题解答
第一章 绪论1.1 单选题1. D2. C3. D4. B5. A6. B7. C8. C9. A 10. B第10小题提示:在含有n 个元素的数据表中顺序查找任一元素的平均比较次数为p c i i i n=∑1,p i为查找第i 个元素的概率,c i是查找第i 个元素时需要比较的元素数,查找所有元素的概率之和为1,若查找每个元素的概率相同,则平均查找长度的计算公式可简化为11ni i nc =∑。
此题的计算式为)76543(121241131+++++⨯+⨯=35/121.2 算法分析题 1. 判断n 是否为一个素数,若是则返回逻辑值true ,否则返回逻辑值false 。
该算法的时间复杂度为O (n )。
2. 计算∑=ni i 1!的值。
时间复杂度为O (n )。
3. 计算∑=n i i 1!的值。
时间复杂度为O (n 2)。
4. 求出满足不等式1+2+3+...+i ≥n 的最小i 值。
时间复杂度为O (n )。
提示:因为1+2+3+...+i=(1+i)i/2,即当n 很大时i 的平方与n 成正比,所以i 的值(即函数中while 循环的次数)与n 的平方根成正比。
5. 打印出一个具有n 行的乘法表,第i 行(1≤i ≤n )中有n-i+1个乘法项,每个乘法项为i 与j (i ≤j ≤n )的乘积。
时间复杂度为O (n 2)。
6. 统计并返回二维数组a 中大于等于k 的元素的个数。
时间复杂度为O (m ×n),假定m 和n 分别表示二维数组a 的行数和列数。
7. 矩阵相乘,即a[m][n]×b[n][p]→c[m][p]。
时间复杂度为O (M ×N ×P)。
这里假定二维数组a 的行列数为m 和n ,二维数组b 的行列数为n 和p ,二维数组c 的行列数为m 和p 。
1.3 算法设计题设计二次多项式ax 2+bx+c 的一种抽象数据类型,假定起名为Quadratic ,该类型的数据部分为双精度类型的3个系数项a 、b 和c ,操作部分为: (1) 初始化二次多项式中的三个数据成员a 、b 和c 。
数据结构(Java版)-习题解答与实验指导
数据结构(Java版)习题解答与实验指导目录第1章绪论 (1)1.1 数据结构的基本概念 (1)1.2 算法 (2)第2章线性表 (3)2.1 线性表抽象数据类型 (3)2.2 线性表的顺序存储和实现 (4)2.2.1 线性表的顺序存储结构 (4)2.2.2 顺序表 (5)2.2.3 排序顺序表 (7)2.3 线性表的链式存储和实现 (9)2.3.1 单链表 (9)【习题2-8】单链表结点类问题讨论。
(9)【习2.1】使用单链表求解Josephus环问题。
(12)【习2.2】集合并运算,单链表深拷贝的应用。
(14)2.3.2 双链表 (16)【习2.3】循环双链表的迭代方法。
(19)【习2.4】循环双链表合并连接。
(19)第3章串 (21)3.1 串抽象数据类型 (21)3.2 串的存储和实现 (22)3.2.1 串的存储结构 (22)3.2.2 常量字符串类 (22)【习3.1】C/C++语言,string.h中的strcpy()和strcat()函数存在下标越界错误。
(22)【思考题3-1】逆转String串,分析算法效率。
(24)【实验题3-1】MyString类,比较串大小,忽略字母大小写。
25【例3.2思考题3-2】MyInteger整数类,返回value的radix进制原码字符串。
(26)【实验题3-9】浮点数类。
(27)3.2.3 变量字符串类 (30)【实验题3-11】删除变量串中的所有空格。
4-样卷 (30)3.3 串的模式匹配 (31)3.3.1 Brute-Force模式匹配算法 (31)3.3.2 模式匹配应用 (32)【思考题3-4,实验题3-13】MyString类,replaceAll(pattern,s)改错。
(32)3.3.3 KMP模式匹配算法 (33)第4章栈和队列 (36)4.1 栈 (36)4.2 队列 (38)4.3 递归 (41)【习4.1】打印数字塔。
数据结构(Java版)-习题解答与实验指导
数据结构(Java版)习题解答与实验指导目录第1章绪论 (1)1.1 数据结构的基本概念 (1)1.2 算法 (2)第2章线性表 (3)2.1 线性表抽象数据类型 (3)2.2 线性表的顺序存储和实现 (4)2.2.1 线性表的顺序存储结构 (4)2.2.2 顺序表 (5)2.2.3 排序顺序表 (7)2.3 线性表的链式存储和实现 (9)2.3.1 单链表 (9)【习题2-8】单链表结点类问题讨论。
(9)【习2.1】使用单链表求解Josephus环问题。
(12)【习2.2】集合并运算,单链表深拷贝的应用。
(14)2.3.2 双链表 (16)【习2.3】循环双链表的迭代方法。
(19)【习2.4】循环双链表合并连接。
(19)第3章串 (21)3.1 串抽象数据类型 (21)3.2 串的存储和实现 (22)3.2.1 串的存储结构 (22)3.2.2 常量字符串类 (22)【习3.1】C/C++语言,string.h中的strcpy()和strcat()函数存在下标越界错误。
(22)【思考题3-1】逆转String串,分析算法效率。
(24)【实验题3-1】MyString类,比较串大小,忽略字母大小写。
25【例3.2思考题3-2】MyInteger整数类,返回value的radix进制原码字符串。
(26)【实验题3-9】浮点数类。
(27)3.2.3 变量字符串类 (30)【实验题3-11】删除变量串中的所有空格。
4-样卷 (30)3.3 串的模式匹配 (31)3.3.1 Brute-Force模式匹配算法 (31)3.3.2 模式匹配应用 (32)【思考题3-4,实验题3-13】MyString类,replaceAll(pattern,s)改错。
(32)3.3.3 KMP模式匹配算法 (33)第4章栈和队列 (37)4.1 栈 (37)4.2 队列 (39)4.3 递归 (42)【习4.1】打印数字塔。
数据结构java语言描述课后答案
数据结构java语言描述课后答案【篇一:数据机构第一章——java语言描述第1章绪论习题参考答案】概念题1. 试述下列各组概念:⑴数据、数据元素、数据项⑵数据结构、数据的逻辑结构、数据的存储结构⑶数据类型、数据操作⑷算法、算法的时间复杂度、算法的空间复杂度参考答案: 略2.试述数据结构研究的3个方面的内容。
参考答案:数据结构研究的3个方面分别是数据的逻辑结构、数据的存储结构和数据的运算(操作)。
3.试述集合、线性结构、树型结构和图型结构四种常用数据结构的特性。
参考答案:集合结构:集合中数据元素之间除了“同属于一个集合”的特性外,数据元素之间无其它关系,它们之间的关系是松散性的。
线性结构:线性结构中数据元素之间存在“一对一”的关系。
即若结构非空,则它有且仅有一个开始结点和终端结点,开始结点没有前趋但有一个后继,终端结点没有后继但有一个前趋,其余结点有且仅有一个前驱和一个后继。
树形结构:树形结构中数据元素之间存在“一对多”的关系。
即若结构非空,则它有一个称为根的结点,此结点无前驱结点,其余结点有且仅有一个前驱,所有结点都可以有多个后继。
图形结构:图形结构中数据元素之间存在“多对多”的关系。
即若结构非空,则在这种数据结构中任何结点都可能有多个前驱和后继。
4.设有数据的逻辑结构的二元组定义形式为b=(d,r),其中d={a1,a2,?,an}, r={ai,ai+1| i=1,2,?,n-1},请画出此逻辑结构对应的顺序存储结构和链式存储结构的示意图。
参考答案:顺序存储结构示意图如下:0 1 2 ?n-2 n-1链式存储结构示意图如下:?5.设一个数据结构的逻辑结构如图1.9所示,请写出它的二元组定义形式。
图1.9 第5题的逻辑结构图参考答案:它的二元组定义形式为b=(d,r),其中d={k1,k2,k3,k4,k5,k6,k7,k8,k9},r=k1,k3,k1,k8,k2,k3k2,k4,k2,k5,k3,k9,k4,k6,k4,k7,k5,k6,k8,k9,k9, k7 }。
数据结构(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.3B.37C.50D.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____条边。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6 a5
b
1
d
5 c5
3
6
42
e6 f
第7章
各种内部排序算法的原理、执行过程、时间复杂度、 稳定性。
习题一、二;
例题
1.以关键字序列{53,07,52,01,98,10,87, 25,63,46}为例,手工执行直接插入排序、希尔排 序(增量为5,2,1)、快速排序、归并排序算法, 完成:
(1)写出每一种排序的每一趟排序结束时的关键 字序列;
(2)分析哪些排序是稳定的,哪些是不稳定,并 为每一种不稳定的排序方法举出一个不稳定 求查找算法的ASL; 习题一、二;
例如: 关键字集合
{ 19, 01, 23, 14, 55, 68, 11, 82, 36 }
第5章
树和二叉树的基本概念; 二叉树的性质154; 二叉树的顺序和链式存储; 二叉树的四种遍历方法,能写出正确的遍历序列; 二叉树的建立:先根和中根,后根和中根。 构造哈夫曼树和哈弗曼编码,求哈弗曼树的WPL; 树、森林、二叉树之间的转换; 习题一、二
1. 将如下图的森林转换为二叉树
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]的存储首地址.
LOC(a[5,8])= BA+(7×8+4) ×3= BA+180
例如: 关键字集合 { 19, 01, 23, 14, 55, 68, 11, 82, 36 }
设定哈希函数 H(key) = key MOD 11 ( 表长=11 )
若采用二次探测再散列处理冲突
0
12 3
4
5
6
7
8
55 01 23 14 36 82 68
19
11212 14
1
ASL(成功)= (1*5+2*1+3+4)/9=14/9
习题一、二、三(1,2)
第4章
串的概念; 串的存储方式,掌握顺序串的基本操作。 数组的顺序存储,已知基地址,求任意元素地址; 特殊矩阵的压缩存储:对称阵、三角阵; 习题一、二、三(7).
[ 例 1] 假 设 按 低 下 标 优 先 存 储 整 数 数 组 A9×3×5×8 时 , 第一个元素的字节地址是100,每个整数占 四个字节,问元素a3125的地址是什么?
0 V1 1 1 V2 0 2 V3 0
2
3
2
深度优先搜索法遍历序列: V1,V2,V3,V5,V6,V4
1
4
3 V4 0 4 V5 2 5 V6 3
5
广度优先搜索法遍历序列:
5 V1,V2,V3,V4,V5,V6
4
例题:
设有如下的两个网络, 分别用普里姆(Prim)算法 和克鲁斯卡尔(Kruskal)算法具体构造相应的最小生 成树。 写出过程。
9 10
11
3
例1:已知一个图,若从顶点v1出发分别写出
按深度优先搜索法进行遍历和按广度优先搜
索法进行遍历的一种可能得到的顶点序列。
V1 V2 V3
深度优先搜索法遍历序列: V1,V2,V3,V5,V6,V4
V4
广度优先搜索法遍历序列:
V5
V6
V1,V2,V3,V4,V5,V6
例2:已知一个图的邻接表存储结构如下图,若从顶点 v1出发分别写出有向图按深度优先搜索法进行遍历和按 广度优先搜索法进行遍历的得到的顶点序列。
设定哈希函数 H(key) = key MOD 11 ( 表长=11 )
若采用线性探测再散列处理冲突 产生二次聚集
0
1
2
3
45
6 78
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
A
F
K
BC D
G
LM
E HI J
N
2. 假设用于通讯的电文仅由6个字母组成,字
母在电文中出现的频率分别为:7,9,2,6,
32,3。试为这6个字母设计哈夫曼编码。
第6章
图的基本概念; 图的存储结构:邻接矩阵和邻接表。定义在其上的
基本操作。 图的DFS和BFS序列; 最小生成树的构造:克鲁斯卡尔、普里姆算法过程; 最短路径:迪杰斯特拉算法。 习题一、二、三(1,3,4)
第1章
(1)数据结构:包括逻辑结构和存储结构; (2)逻辑结构有几类?存储结构有几类? (3)算法的时间复杂度分析(关键操作)
第2章
线性表的顺序和链式存储的定义及特点; 顺序表和链表上的基本操作; 课后习题一、二、三(2,5,8).
第3章
栈和队列的概念、特点;
栈和队列的顺序和链式存储,及定义在其上 的基本操作;