2012吉林省JAVA版数据结构(必备资料)

2012吉林省JAVA版数据结构(必备资料)
2012吉林省JAVA版数据结构(必备资料)

1、n个顶点的图的最小生成树必定( D ),是不正确的描述。

A)不唯一 B)权的总和唯一

C)不含回路 D)有n条边

2、n个顶点,e条边的有向图的邻接矩阵中非零元素有( C )个。

A)n B)2e C)e D) n+e

3、( C )在进行插入操作时,常产生假溢出现象。

A)顺序栈 B)循环队列

C)顺序队列 D)链队列

4、设单链表中指针p指着结点A,若要删除A之后的结点(若存在),则需要修改指针的操作为( A )。

A)p->next=p->next->next B)p=p->next

C)p=p->nexe->next D)p->next=p

5、队列的操作的原则是( A )。

A)先进先出 B) 后进先出

C) 只能进行插入 D) 只能进行删除

6、用一维数组A进行顺序存储时,若起始地址为loc(A1),元素长度为c,则A的第i个数组单元在存放地址loc(Ai),等于( B )。

A)loc(A1)+i*c B)loc(A1)+(i-1)*c

C)loc(A1)+i*c+1 D)loc(A1)+(i+1)*c

7、向一个栈顶指针为hs的链栈中插入一个s结点时,应执行( D )。

A) hs->next=s; B) s->next=hs->next; hs->next=s;

C) s->next=hs; hs=s; D) s->next=hs; hs=hs->next;

8、下列序列中,执行第一趟快速排序后得到的序列是( 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]

9、对待排序的元素序列进行划分,将其分为左、右两个子序列,再对两个子序列施加同样的排序操作,直到子序列为空或只剩一个元素为止。这样的排序方法是( A )。

A)直接选择排序 B)直接插入排序

C)快速排序 D)起泡排序

10、采用链结构存储线性表时,其地址( B )。

A)必须是连续的 B)连续不连续都可以

C)部分地址必须是连续 D)必须是不连续的

11、设一数列的顺序为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

12、设给定问题的规模为变量n,解决该问题的算法所需时间为Tn=O(f(n)),Tn表示式中记号O表示( A )。

A)一个数量级别 B)一个平均值

C)一个最大值 D)一个均方值

13、有一个有序表{1,4,6,10,18,35,42,53,67,71,78,84,92,99}。当用二分查找法查找键值为84的结点时,经( B )比较后查找成功。

A) 4 B)3 C)2 D)12

数据结构复习资料,java数据结构期末考试

第二章算法分析 1.算法分析是计算机科学的基础 2.增长函数表示问题(n)大小与我们希望最优化的值之间的关系。该函数表示了该算法的时间复杂度或空间复杂度。增长函数表示与该问题大小相对应的时间或空间的使用 3.渐进复杂度:随着n的增加时增长函数的一般性质,这一特性基于该表达式的主项,即n 增加时表达式中增长最快的那一项。 4.渐进复杂度称为算法的阶次,算法的阶次是忽略该算法的增长函数中的常量和其他次要项,只保留主项而得出来的。算法的阶次为增长函数提供了一个上界。 5.渐进复杂度:增长函数的界限,由增长函数的主项确定的。渐进复杂度类似的函数,归为相同类型的函数。 6.只有可运行的语句才会增加时间复杂度。 7. O() 或者大O记法:与问题大小无关、执行时间恒定的增长函数称为具有O(1)的复杂度。 增长函数阶次 t(n)=17 O(1) t(n)=3log n O(log n) t(n)=20n-4 O(n) t(n)=12n log n + 100n O(n log n) t(n)=3n2+ 5n - 2 O(n2) t(n)=8n3+ 3n2O(n3) t(n)=2n+ 18n2+3n O(2n) 8.所有具有相同阶次的算法,从运行效率的角度来说都是等价的。 9.如果算法的运行效率低,从长远来说,使用更快的处理器也无济于事。 10.要分析循环运行,首先要确定该循环体的阶次n,然后用该循环要运行的次数乘以它。(n 表示的是问题的大小) 11.分析嵌套循环的复杂度时,必须将内层和外层循环都考虑进来。 12.方法调用的复杂度分析: 如:public void printsum(int count){ int sum = 0 ; for (int I = 1 ; I < count ; I++) sum += I ; System.out.println(sun); } printsum方法的复杂度为O(n),计算调用该方法的初始循环的时间复杂度,只需把printsum方法的复杂度乘以该循环运行的次数即可。所以调用上面实现的printsum方法的复 杂度为O(n2)。 13指数函数增长> 幂函数增长> 对数函数增长

数据结构与算法(JAVA语言版)_

目录 第一章 Java 与面向对象程序设计........................................................................................1 Java 语言基础知识....................................................................................................1 基本数据类型及运算.......................................................................................1 流程控制语句...................................................................................................3 字符串...............................................................................................................3 数组...................................................................................................................5 Java 的面向对象特性................................................................................................7 类与对象...........................................................................................................7 继承...................................................................................................................9 接口.................................................................................................................10 异常.........................................................................................................................11 Java 与指针..............................................................................................................12 数据结构与算法基础.............................................................................................15 数据结构.................................................................................................................15 基本概念.........................................................................................................15 抽象数据类型.................................................................................................17 小结.................................................................................................................19 算法及性能分析.....................................................................................................19 算法.................................................................................................................19 时间复杂性.....................................................................................................20 空间复杂性.....................................................................................................24 算法时间复杂度分析.....................................................................................25 最佳、最坏与平均情况分析.........................................................................27 均摊分析.........................................................................................................29 线性表.....................................................................................................................32 线性表及抽象数据类型.........................................................................................32 线性表定义.....................................................................................................32 线性表的抽象数据类型.................................................................................32 List 接口 ..........................................................................................................34 Strategy 接口 ...................................................................................................35 线性表的顺序存储与实现.....................................................................................36 线性表的链式存储与实现.....................................................................................42 单链表.............................................................................................................42 双向链表.........................................................................................................46 线性表的单链表实现.....................................................................................48 两种实现的对比.....................................................................................................53 基于时间的比较.............................................................................................53 基于空间的比较.............................................................................................53 链接表.....................................................................................................................54 基于结点的操作.............................................................................................54 链接表接口.....................................................................................................54 基于双向链表实现的链接表.........................................................................56 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.2 1.2.1 1.2.2 1.2.3 1.3 1.4 第二章 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 第三章 3.1 3.1.1 3.1.2 3.1.3 3.1.4 3.2 3.3 3.3.1 3.3.2 3.3.3 3.4 3.5 3.4.1 3.4.2 3.5.1 3.5.2 3.5.3

数据结构(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 ) =(rear-1)%m; =(front+1)%m; =(front-1)%m; =(rear+1)%m; 5、栈和队列的共同点是__C______ A.都是先进后出 B.都是先进先出 C.只允许在端点处插入和删除元素 D.没有共同点 6、已知一堆栈的进栈序列为1234,则下列哪个序列为不可能的出栈序列______D__ 7、具有线性结构的数据结构是( C ) A.树 B.图 C.栈和队列 D.广义表 8、假设以数组A[60]存放循环队列的元素,其头指针是front=47,当前队列有50个元素,则队列的尾指针值为( B ) A.3 B.37 C.50 D.97

9、若栈采用链式存储结构,则下列说法中正确的是( B ) A.需要判断栈满且需要判断栈空 B.不需要判断栈满但需要判断栈空 C.需要判断栈满但不需要判断栈空 D.不需要判断栈满也不需要判断栈空 10、若一棵具有n(n>0)个结点的二叉树的先序序列与后序序列正好相反,则该二叉树一定是( C ) A.结点均无左孩子的二叉树 B.结点均无右孩子的二叉树 C.高度为n的二叉树 D.存在度为2的结点的二叉树 11、若一棵二叉树中度为l的结点个数是3,度为2的结点个数是4,则该二叉树叶子结点的个数是( B ) 12、在n个结点的线索二叉树中,线索的数目为_C_______ A.n-1 B. n +1 13、一棵完全二叉树有1001个结点,其中有____B_____叶子结点 15、一个有n个顶点的无向图最多有___C____条边。 A. n B. n(n-1) C. n(n-1)/2 D. 2n 16、以v1为起始结点对下图进行深度优先遍历,正确的遍历序列是( D )

《数据结构Java版》习题解答

第0章Java程序设计基础 (1) 【习0.1】实验0.1 哥德巴赫猜想。 (1) 【习0.2】实验0.2 杨辉三角形。 (1) 【习0.3】实验0.3 金额的中文大写形式。 (1) 【习0.4】实验0.4 下标和相等的数字方阵。 (1) 【习0.5】实验0.5 找出一个二维数组的鞍点 (2) 【习0.6】实验0.6 复数类。 (2) 【习0.7】实验0.8 图形接口与实现图形接口的类 (2) 第1章绪论 (3) 【习1.1】实验1.1 判断数组元素是否已按升序排序。 (3) 【习1.2】实验1.3 用递归算法求两个整数的最大公因数。 (3) 第2章线性表 (5) 【习2.1】习2-5 图2.19的数据结构声明。 (5) 【习2.2】习2-6 如果在遍历单链表时,将p=p.next语句写成p.next=p,结果会怎样? (5) 【习2.3】实验2.2 由指定数组中的多个对象构造单链表。 (5) 【习2.4】实验2.2 单链表的查找、包含、删除操作详见8.2.1。 (5) 【习2.5】实验2.2 单链表的替换操作。 (6) 【习2.6】实验2.2 首尾相接地连接两条单链表。 (6) 【习2.7】实验2.2 复制单链表。 (6) 【习2.8】实验2.2 单链表构造、复制、比较等操作的递归方法。 (7) 【习2.9】建立按升序排序的单链表(不带头结点)。 (8) 【习2.10】实验2.6 带头结点的循环双链表类,实现线性表接口。 (10) 【习2.11】实验2.5 建立按升序排序的循环双链表。 (14) 第3章栈和队列 (17) 【习3.1】习3-5 栈和队列有何异同? (17) 【习3.2】能否将栈声明为继承线性表,入栈方法是add(0,e),出栈方法是remove(0)?为什么? (17) 【习3.3】能否用一个线性表作为栈的成员变量,入栈方法是add(0,e),出栈方法是remove(0)? 为什么? (17) 【习3.4】能否将队列声明为继承线性表,入队方法是add(e),出队方法是remove(0)?为什么? (17) 第4章串 (18) 【习4.1】实验4.6 找出两个字符串中所有共同的字符。 (18) 【习4.2】习4-9(1) 已知目标串为"abbaba"、模式串为"aba",画出其KMP算法的匹配过程,并给出比较次数。 (18)

数据结构(Java版)-线性表的实现与应用完整版

数据结构(Java版)-线性表的实现与应用完整版

实验报告 课程名称数据结构 实验项目线性表的实现及应用 实验仪器PC机一台 学院_____ 专业 班级/学号 姓名 实验日期 成绩 指导教师

北京信息科技大学 信息管理学院 (数据结构课程上机)实验报告 专业: 班级: 学号: 姓名: 成绩: 实验名称线性表的实现及应用实验地点实验时间 1.实验目的: (1)理解用顺序表实现线性表的特点;熟练掌握顺序表的基本操作;学会利用顺序表解决实际应用问题。 (2)熟练掌握单链表的使用;理解用链表实现线性表的特点;了解链表的多种形式;学会利用单链表解决实际应用问题。 2.实验要求: (1)学时为8学时; (2)能在机器上正确、调试运行程序; (3)本实验需提交实验报告; (4)实验报告文件命名方法:数据结构实验_信管16xx_学号_姓名.doc。 3.实验内容和步骤: 第一部分顺序表的实现与应用 (1)基于顺序表实现线性表的以下基本操作: public interface LList { //线性表接口,泛型参数T表示数据元素的数据类型 boolean isEmpty(); //判断线性表是否空 int size(); //返回线性表长度 T get(int i); //返回第i(i≥0)个元素 void set(int i, T x); //设置第i个元素值为x void insert(int i, T x); //插入x作为第i个元素 void insert(T x); //在线性表最后插入x元素 T remove(int i); //删除第i个元素并返回被删除对象 int search(T key); //查找,返回首次出现的关键字为key的元素的位序void removeAll(); //删除线性表所有元素 public String toString();//返回顺序表所有元素的描述字符串,形式为“(,)” } 要求:实现后应编写代码段对每个基本操作做测试。

数据结构(Java版)习题解答

A I 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 (+ n n f(n)≦c.g(n) →f(n)=O(g(n)) (a) f(n)=100n+9 c=101, g(n)=n, n0=10 得知f(n)=O(n) (b) f(n)=1000n2+100n–8 c=2000, g(n)= n2, n0=1 得知f(n)=O(n2) (c) f(n)=5*2n+9 n2+2 c=10, n0=5 得知f(n)=O(2n) f(n)≧c g(n) →f(n)=Ω(g(n)) (a) f(n)=3n+1 c=2, n0=1, g(n)=n 得知f(n)=Ω(n)(b) f(n)=100n2+4n+5 c=10, n0=1, g(n)= n2 得知f(n)=Ω(n2) (c) f(n)=8*2n+8n+16 c=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+2 c1=3, c2=6, n0=1 得知f(n) = Θ (n) (b) f(n)=9n2+4n+2 c1=9, c2=16, n0=1 得知f(n) = Θ (n2) (c) f(n)=8n4+5n3+5 c1=8, c2=20, n0=1 得知f(n) = Θ (n4)

练习题解答 第二章练习题答案 1. 分别以行为主和以列为主说明之。 (a) 以行为主 A(i, j)=l0+(i–1)*u2*d+(j–1)*d (b) 以列为主 A(i, j)=l0+(j–1)*u1*d+(i–1)*d 2. 以列为主 A(i, j)=l0+(j–12)*md+(i–l1)d m=u1–l1+1=5–(–3)+1=9 m=u2–l2+1=2–(–4)+1=7 A(1, 1) =100+(1–(–4))*9+(1–(–3)) =100+45+4=149 3. 分别以行为主和以列为主的说明。 由于数组为A(1:u1, 1:u2, 1:u3),因此p = u1-l1+1, q = u2- l2+1, r = u3- l3+1 所以p = u1-1+1 = u1, q = u2-1+1 = u2, r = u3-1+1 = u3 (a) 以行为主 A(i, j, k)=l0 + (i–1)*u2*u3*d + (j–1)*u3*d +(k-1) (b) 以列为主 A(i, j, k)=l0 + (k–1)*u1*u2*d + (j–1)*u1*d + (i-1)*d 4. 以列为主:A(i, j, k)=l0 + (k–l3)*pqd + (j–l2)*pd + (i-l1)*d p = 5-(-3) + 1 = 9, q = 2-(-4)+1 = 7, r = 5-1+1 = 5 A(2, 1, 2) = 100 + (2-1)*9*7*1 + (1-(-4))*9*1 + (2-(-3))*1 = 100 + 63 + 45 + 5 = 253

数据结构Java版第二章习题

(按照自己的情况选作部分习题,不要抄袭) 第二章习题 顺序存储线性表 一判断题 1.线性表的逻辑顺序与存储顺序总是一致的。× 2.顺序存储的线性表可以按序号随机存取。√ 3.顺序表的插入和删除操作不需要付出很大的时间代价,因为每次操作平均只有近一半的元素需要移动。× 4.线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此是属于同一数据对象。√ 5.在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。×6.在线性表的顺序存储结构中,插入和删除时,移动元素的个数与该元素的位置有关。√ 二单选题 (请从下列A,B,C,D选项中选择一项) 1.线性表是( A ) 。 (A) 一个有限序列,可以为空; (B) 一个有限序列,不能为空; (C) 一个无限序列,可以为空; (D) 一个无序序列,不能为空。 2.对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的。插入一个元素时平均要移动表中的(A)个元素。 (A) n/2 (B) n+1/2 (C) n -1/2 (D) n 三填空题

1.在顺序表中做插入操作时首先检查___表是否满了______________。 四算法设计题 1.设线性表存放在向量A[arrsize]的前elenum个分量中,且递增有序。试写一算法,将x 插入到线性表的适当位置上,以保持线性表的有序性。并且分析算法的时间复杂度。2.已知一顺序表A,其元素值非递减有序排列,编写一个函数删除顺序表中多余的值相同的元素。 3.编写一个函数,从一给定的顺序表A中删除值在x~y(x<=y)之间的所有元素,要求以较高的效率来实现。 提示:可以先将顺序表中所有值在x~y之间的元素置成一个特殊的值,并不立即删除它们,然后从最后向前依次扫描,发现具有特殊值的元素后,移动其后面的元素将其删除掉。 4.线性表中有n个元素,每个元素是一个字符,现存于向量R[n]中,试写一算法,使R 中的字符按字母字符、数字字符和其它字符的顺序排列。要求利用原来的存储空间,元素移动次数最小。(研54) 5.线性表用顺序存储,设计一个算法,用尽可能少的辅助存储空间将顺序表中前m个元素和后n个元素进行整体互换。即将线性表 (a1, a2, … , a m, b1, b2, … , b n)改变为: (b1, b2, … , b n , a1, a2, … , a m)。 五上机实习题目 约瑟夫环问题 约瑟夫环问题:设编号为1,2,3,……,n的n(n>0)个人按顺时针方向围坐一圈,

《数据结构(Java语言版)》试卷1

长沙民政学院2015年上学期期末考试卷(A卷) 考试科目:《数据结构》考试形式:闭卷 适应班级:软开 1431-1439 一、单项选择(共20题,每题2分, 共40分) 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. 单链表 B. 仅有头指针的单循环链表 C. 双链表 D.仅有尾指针的单循环链表 7、栈中元素的进出原则是() A. 先进先出 B.后进先出 C. 栈空则进 D. 栈满则出 8、若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi 为( ) A.i B.n=i C.n-i+1 D.不确定 9、若依次输入数据元素序列{a,b,c,d,e,f,g}进栈,出栈操作可以和入栈操作间隔进行,则下列哪个元素序列可以由出栈序列得到( ) A.{ c,d,b,e,g,a,f} B.{ f,e,g,d,a,c,b} C.{e,f,d,g,b,c,a} D.{d,e,c,f,b,g,a} 10、一个栈的入栈序列是1,2,3,4,5,则下列序列中不可能的出栈序列是( ) A. 2,3,4,1,5 B. 2,3,1,4,5 C.5,4,1,3,2 D.1,5,4,3,2 11、判断一个循环队列( m0为最大队列长度(以元素为单位),front和rear分别为队列的队头指针和队尾指针 ) 为空队列的条件是( )。 A. front == rear B. front != rear C. front == (rear+1) % m0 D. front != (rear+1) % m0 12、判断一个循环队列( m0为最大队列长度(以元素为单位),front和rear分别为队列的队头指针和队尾指针 )为满队列的条件是( )。 A. front== rear B.front!= rear C. front==( rear+1) % m0 D. front!=( rear+1) % m0 13、串是一种特殊的线性表,其特殊性体现在()。 A.可以顺序存储B.数据元素是一个字符 C.可以链式存储 D.数据元素可以是多个字符 14、假设S=“abcaabcaaabca”,T=“bca”, (T,3) (其中3为索引号,索引号从0开始编号)的结果是() A.1 B.5 C.10 D.0 15、二叉树的数据结构描述了数据之间的()关系。 A.链接关系 B.层次关系 C.网状关系 D.随机关系 16、()遍历方法在遍历它的左子树和右子树后再遍历它自身。 A.先序遍历 B.后序遍历 C. 中序遍历 D. 层次遍历 17、在构造哈夫曼树的过程中说法正确的是()。 A. 使权值越大的叶结点越远离根结点,而权值越小的叶结点越靠近根结点 B.使权值越大的叶结点越靠近根结点,而权值越小的叶结点越远离根结点 C. 最终是带权路径长度最大的二叉树 D. 构造的过程是一次到位 18、55为最第一趟快速排序的基准值,执行一趟快速排序能够得到的序列是(A )。 A. [12,27,45,41] 55 [34,63,72] B. [45,34,12,41] 55 [72,63,27] C. [63,12,34,45,27] 55 [41,72] D. [41,12,34,45,27] 55 [72,63] 19、对线性表进行二分查找时,要求线性表必须( )。 A.以顺序方式存储 B.以链接方式存储

《数据结构(Java版)(第2版)》习题解答

数据结构(Java版)(第2版) 习题解答 叶核亚编著 目录 第0章Java程序设计基础 (1) 【习0.1】实验0.1 哥德巴赫猜想。 (1) 【习0.2】实验0.2 杨辉三角形。 (1) 【习0.3】实验0.3 金额的中文大写形式。 (1) 【习0.4】实验0.4 下标和相等的数字方阵。 (1) 【习0.5】实验0.5 找出一个二维数组的鞍点 (2) 【习0.6】实验0.6 复数类。 (2) 【习0.7】实验0.8 图形接口与实现图形接口的类 (2) 第1章绪论 (3) 【习1.1】实验1.1 判断数组元素是否已按升序排序。 (3) 【习1.2】实验1.3 用递归算法求两个整数的最大公因数。 (3) 第2章线性表 (5) 【习2.1】习2-5 图2.19的数据结构声明。 (5) 【习2.2】习2-6 如果在遍历单链表时,将p=p.next语句写成p.next=p,结果会怎样? (5) 【习2.3】实验2.2 由指定数组中的多个对象构造单链表。 (5) 【习2.4】实验2.2 单链表的查找、包含、删除操作详见8.2.1。 (5) 【习2.5】实验2.2 单链表的替换操作。 (6) 【习2.6】实验2.2 首尾相接地连接两条单链表。 (6) 【习2.7】实验2.2 复制单链表。 (6) 【习2.8】实验2.2 单链表构造、复制、比较等操作的递归方法。 (7) 【习2.9】建立按升序排序的单链表(不带头结点)。 (8) 【习2.10】实验2.6 带头结点的循环双链表类,实现线性表接口。 (10) 【习2.11】实验2.5 建立按升序排序的循环双链表。 (14) 第3章栈和队列 (17) 【习3.1】习3-5 栈和队列有何异同? (17) 【习3.2】能否将栈声明为继承线性表,入栈方法是add(0,e),出栈方法是remove(0)?为什么?

数据结构(java版)线性表的实现与应用完整版

实验报告 课程名称数据结构 实验项目线性表的实现及应用 实验仪器 PC机一台 学院_____ 专业 班级/学号 姓名 实验日期 成绩 指导教师

北京信息科技大学 信息管理学院 (数据结构课程上机)实验报告

ADT List { boolean isEmpty(); ndexOf("+key+"),"); for (int i=0; i<; i++) { if[i])) etName()+"("; oString(); oString(); (1) package ex1;

public class Josephus { public Josephus(int n, int k, int m) { "Josephus("+n+","+k+","+m+"),"); SeqList list = new SeqList(n); oString()+","); oString()); o String()+","); oString()); etName()+"("; //返回类名 for (Node p= p!=null; p=//p遍历单链表 { str += if !=null) str += ","; //不是最后一个结点时,加分隔符 } return str+")"; } }

(5)、 package ex2; public class SortedSinglyList> extends SinglyList{ //构造空排序单链表 public SortedSinglyList() { super(); //默认调用父类构造方法SinglyList() } public SortedSinglyList(SinglyList list) { super(); //构造空单链表 for (Node p= p!=null; p=//直接插入排序,每趟插入1个元素 ; //排序单链表按值插入 } //构造,将values数组中的所有对象按值插入 public SortedSinglyList(T values[]) { super();

《数据结构(Java版)(第4版)》课程设计题资料

第10章课程设计 10.4 课程设计选题 课程设计的目的、要求和选题详见教材10.4节,及课程设计任务书。 10.4.1 线性表 1. 多项式的表示和运算 题意详见教材2.4节。 (1)使用排序单链表存储多项式 10-1 ?一元多项式相加,PolySinglyList多项式排序单链表类增加以下成员方法,public权限。 //多项式相加,返回this+list的多项式,不改变this和list,C(x)=A(x)+B(x)。 //算法不调用深拷贝,将this(A)和list(B)中的所有结点合并(相加)到C多项式单链表 PolySinglyList union(PolySinglyList list) 10-2 ?二元多项式相加,实现10-1题。 10-3 ?一元多项式相乘,Polynomial多项式类增加以下成员方法。 public boolean equals(Object obj) //比较两个多项式是否相等,覆盖 public Polynomial multi(Polynomial poly) //相乘,返回this*poly的多项式10-4 ?二元多项式相乘,实现10-3题。 (2)使用排序循环双链表存储多项式 10-5 ?一元多项式相加,声明PolyDoublyList多项式排序循环双链表类,继承排序循环双链表类,方法声明如下。Polynomial多项式类使用PolyDoublyList对象作为成员变量。 PolyDoublyList union(PolyDoublyList list) //返回相加的多项式,不调用深拷贝10-6 ?二元多项式相加,实现10-5题。 10-7 ?一元多项式相乘,声明PolyDoublyList多项式排序循环双链表类,继承排序循环双链表类,实现二元多项式相乘运算,方法声明如下。Polynomial多项式类使用PolyDoublyList对象作为成员变量。 Polynomial multi(Polynomial poly) //返回相乘的多项式 10-8 ?二元多项式相乘,实现10-7题。 10.4.2 栈和队列及递归算法 1. 计算表达式值 在例4.2、例4.6计算算术表达式值的基础上,增加以下功能。 ⑴检查表达式语法是否正确。 ⑵使用散列映射存储运算符集合,建立从运算符到优先级的映射,快速查找指定运算符的优先级。运算符集合包括位运算符、关系运算符、逻辑运算符、字符串连接运算符等,各运算符的优先级见附录D。 ⑶整数表达式增加位运算功能。 ⑷计算逻辑表达式、字符表达式、字符串表达式等,BNF定义见教材实验4-12。

《数据结构(Java版)》课程实验选题_56683

实验一线性表的基本操作 实验范围为第2章,任务是验证教材中的线性表类及其基本操作,设计实现指定操作的算法,并做算法分析。“实验目的和要求”已由教材实验2给出。要求使用Java语言,采用泛型类,算法效率为一次遍历。 实验题目及分配如下(按班级名单序号依次选取)。 以下各题对带头结点的单链表进行操作,方法声明见实验2。 (1)判断单链表是否包含另一条单链表的所有结点,即判断无序的子集。 (2)返回从单链表指定位置开始、长度为n的子表,深拷贝。 (3)以深拷贝方式在单链表的指定位置插入另一条单链表,集合并运算。 (4)以深拷贝方式在单链表最后添加另一条单链表的所有结点。 (5)删除单链表从指定位置开始、长度为n的子表。 (6)返回由两条单链表中元素值相同的所有结点组成的单链表对象,集合交运算。 (7)删除当前单链表中那些也包含在list链表中的所有结点,集合差运算。 (8)判断单链表是否包含与另一条单链表匹配的子表,BF模式匹配算法。 (9)将单链表中所有与sourcelist匹配的子表替换为destlist子表,包含BF模式匹配算法。 以下各题对带头结点的循环单链表进行操作: (10)比较两条循环单链表是否相等。 (11)判断循环单链表是否包含另一条循环单链表的所有结点。 (12)返回从循环单链表指定位置开始、长度为n的子表,深拷贝。 (13)实现循环单链表深拷贝功能。 (14)由单链表构造循环单链表,深拷贝。 (15)以深拷贝方式在循环单链表的指定位置插入另一条循环单链表,集合并运算。 (16)以深拷贝方式在循环单链表最后添加另一条循环单链表的所有结点。 (17)删除循环单链表从指定位置开始、长度为n的子表。 (18)返回由两条循环单链表中元素值相同的所有结点组成的循环单链表对象,集合交运算。 (19)删除循环单链表中那些也包含在指定另一条循环单链表中的所有结点,集合差运算。 (20)判断循环单链表是否包含与另一条循环单链表匹配的子表。 (21)将循环单链表中所有与sourcelist匹配的子表替换为destlist子表。 以下各题对带头结点的双链表进行操作: (22)比较两条双链表是否相等,并实现递归算法。 (23)判断双链表是否包含另一条双链表的所有结点。 (24)返回从双链表指定位置开始、长度为n的子表,深拷贝。 (25)实现双链表深拷贝功能。 (26)由单链表构造双链表,深拷贝。 (27)以深拷贝方式在双链表的指定位置插入另一条双链表,集合并运算。 (28)以深拷贝方式在双链表最后添加另一条双链表的所有结点。 (29)删除双链表从指定位置开始、长度为n的子表。

数据结构实验指导书(java版)

实验一、单链表的基本操作 一、实验目的 1、掌握线性链表的操作特点,即指针是逻辑关系的映像。 2、掌握动态产生单链表的方法。 3、熟练掌握单链表的插入、删除操作特点,即指针赋值的先后次序。 4、熟练掌握单链表的取元素操作 二、实验内容 1、定义单链表类型并动态创建单链表; 2、实现单链表的取元素操作、插入操作和删除操作; 3、实现输出单链表中各元素值的操作; 4、将单链表中的最小元素移到最前面。 三、实验环境 eclipse环境 四、实验步骤 1、定义单链表节点类; 2、定义单链表类,并实现单链表的创建、插入、删除、取元素操作和将单链表中的最小元素移到最前面的操作; 3、从键盘上依次输入21、75、30、18、42、56,顺序或逆序创建单链表,并输出单链表中的各元素值; 5、分别在单链表的第3个位置和第9个位置插入67和10,给出插入成功或失败的信息,并输出单链表中的各元素值; 6、删除单链表中的第6个数据元素和第8个数据元素,给出删除成功或失败的信息,并输出单链表中的各元素值; 7、取单链表中的第5个数据元素和第7个数据元素; 8、将单链表中的最小元素移到最前面,并输出单链表中的各元素以检查操作是否正确实现。 五、问题讨论 1、单链表具有什么优缺点?

2、单链表的定义与顺序表的定义有什么区别? 3、逆序创建单链表有什么好处? 六、实验报告内容 1、实验目的 2、实验内容和具体要求 3、完成情况和实验记录,实验记录为实验过程中遇到的问题及解决方法 4、程序清单 5、所输入的数据及相应的运行结果 6、问题讨论回答 7、实验心得

实验二、二叉树的遍历和二叉查找树 一、实验目的 1、掌握二叉树的特点及其存储方式; 2、掌握二叉树的创建; 3、掌握二叉树前序、中序、后序遍历的基本方法及应用; 4、掌握二叉查找树的特点; 5、掌握二叉查找树查找(包含contain)、插入和删除操作的实现。 二、实验内容 1、用前序方法建立一棵二叉树; 2、实现前序、中序和后序遍历二叉树的操作; 3、实现统计二叉树叶子结点个数或计算二叉树深度的操作; 4、将输入的一组数据逐个插入实现创建二叉查找树; 5、用非递归实现二叉查找树的查找和删除操作。 三、实验环境 eclipse环境 四、实验步骤 1、二叉链表节点类的定义; 2、二叉树类的定义; 3、建立下图所示的二叉树 以字符串的形式“根左右”定义一棵二叉树时,写出创建二叉树的操作:

数据结构Java版第一章习题

第1章绪论 1-1什么是数据? 它与信息是什么关系? 【解答】 什么是信息?广义地讲,信息就是消息。宇宙三要素(物质、能量、信息)之一。它是现实世界各种事物在人们头脑中的反映。此外,人们通过科学仪器能够认识到的也是信息。信息的特征为:可识别、可存储、可变换、可处理、可传递、可再生、可压缩、可利用、可共享。什么是数据?因为信息的表现形式十分广泛,许多信息在计算机中不方便存储和处理,例如,一个大楼中4部电梯在软件控制下调度和运行的状态、一个商店中商品的在库明细表等,必须将它们转换成数据才能很方便地在计算机中存储、处理、变换。因此,数据(data)是信息的载体,是描述客观事物的数、字符、以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。在计算机中,信息必须以数据的形式出现。 1-2什么是数据结构? 有关数据结构的讨论涉及哪三个方面? 【解答】 数据结构是指数据以及相互之间的关系。记为:数据结构= { D, R }。其中,D是某一数据对象,R是该对象中所有数据成员之间的关系的有限集合。 有关数据结构的讨论一般涉及以下三方面的内容: ①数据成员以及它们相互之间的逻辑关系,也称为数据的逻辑结构,简称为数据结构; ②数据成员极其关系在计算机存储器内的存储表示,也称为数据的物理结构,简称为存储结构; ③施加于该数据结构上的操作。 数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储不是一码事,是与计算机存储无关的。因此,数据的逻辑结构可以看作是从具体问题中抽象出来的数据模型,是数据的应用视图。数据的存储结构是逻辑数据结构在计算机存储器中的实现(亦称为映像),它是依赖于计算机的,是数据的物理视图。数据的操作是定义于数据逻辑结构上的一组运算,每种数据结构都有一个运算的集合。例如搜索、插入、删除、更新、排序等。 1-3数据的逻辑结构分为线性结构和非线性结构两大类。线性结构包括数组、链表、栈、队列、优先级队列等; 非线性结构包括树、图等、这两类结构各自的特点是什么? 【解答】 线性结构的特点是:在结构中所有数据成员都处于一个序列中,有且仅有一个开始成员和一个终端成员,并且所有数据成员都最多有一个直接前驱和一个直接后继。例如,一维数组、线性表等就是典型的线性结构 非线性结构的特点是:一个数据成员可能有零个、一个或多个直接前驱和直接后继。例如,树、图或网络等都是典型的非线性结构。 1-4.什么是抽象数据类型?试用Java的类声明定义"复数"的抽象数据类型。要求 (1) 在复数内部用浮点数定义它的实部和虚部。 (2) 实现3个构造函数:缺省的构造函数没有参数;第二个构造函数将双精度浮点数赋给复数的实部,虚部置为0;第三个构造函数将两个双精度浮点数分别赋给复数的实部和虚部。 (3) 定义获取和修改复数的实部和虚部,以及+、-、*、/等运算的成员函数。 (4) 定义重载的流函数来输出一个复数。 【解答】

相关主题
相关文档
最新文档