文档库 最新最全的文档下载
当前位置:文档库 › 华南农业大学数据结构java版实验二

华南农业大学数据结构java版实验二

华南农业大学数据结构java版实验二
华南农业大学数据结构java版实验二

实验报告二线性表

华南农业大学信息(软件)学院

《数据结构(JAVA)》综合性、设计性实验成绩单

开设时间:2017学年第二学期

一,实验目的:

(1)理解线性表的逻辑结构、两种存储结构和数据操作,熟练运用JAVA语言实现线性表的基本操作,分析各种操作算法特点和时间复杂度。

(2)掌握单链表的遍历、插入和删除等操作算法,实现多项式相加。

二,实验容:

1、设计一个有序顺序表(元素已排序,递增或递减),实现插入、删除等操作,元素插入位置由其值决定。

实现:

(1)升序排序顺序表类名为:SortedSeqList,存成SortedSeqList.java文件;

(2)另外编写SortedSeqList_ex.java文件来演示调用排序顺序表

public class SortedSeqList {

private int MAX_SIZE = 10;

private int[] ary = new int[MAX_SIZE];

private int length = 0;

public SortedSeqList(int[] array) {

if (array == null || array.length == 0) {

this.length = 0;

} else {

ary = array;

length = array.length;

}

}

public void clear() {

length = 0;

}

public boolean isEmpty() {

return length == 0;

}

public void delete(int index) throws Exception {

if (length == 0) {

throw new Exception("No elment to delete");

}

int newAry[] = new int[ary.length - 1];

for (int i = 0, j = 0; i < ary.length; i++) {

if (i == index) {

continue;

} else {

newAry[j++] = ary[i];

}

}

ary = newAry;

length--;

}

public int insert(int value) throws Exception {

if (length == MAX_SIZE) {

throw new Exception("List is full, can't insert more");

}

int[] newAry = new int[length + 1];

int i = 0, j = 0;

for (; i < ary.length; i++, j++) {

if (ary[i] >= value) {

newAry[j] = value;

break;

} else {

newAry[j] = ary[i];

}

}

while (i < ary.length) {

newAry[++j] = ary[i];

i++;

}

ary = newAry;

length++;

return value;

}

public void display() {

System.out.println("\nList now is: ");

for (int i = 0; i < ary.length; i++) {

System.out.print(ary[i] + "\t");

}

}

}

(2)SortedSeqList_ex.java文件来演示调用排序顺序表

public class SortedSeqList_ex {

public static void main(String[] args) throws Exception {

int[] ary = {1, 2, 3, 5, 7};

SortedSeqList list = new SortedSeqList(ary);

list.display();

list.insert(4);

list.display();

list.delete(2);

list.display();

}

}

(3)实验结果

2、在SinglyLinkedList类中增加下列成员方法。

public SinglyLinkedList(E[] element)//由指定数组中的多个对象构造单链表

public SinglyLinkedList(SinglyLinkedList list)//以单链表list构造新的单链表,复制单链表

public void concat(SinglyLinkedList list)//将指定单链表list在当前单链表之后

public Node search(E element)//若查找到指定,则返回结点,否则返回null public boolean contain (E element)//以查找结果判断单链表是否包含指定对象public boolean remove (E element)//移去首次出现的指定对象

public boolean replace (Object obj, E element)//将单链表中的obj对象替换为对象element

public boolean equals(Object obj)//比较两条单链表是否相等

(1)实现代码:

package Q2;

public class Node {

public T data;

public Node next;

public Node(T data,Node next){

this.data=data;

this.next=next;

}

public Node(){

this(null,null);

}

}

package Q2;

public class SinglyLinkedList{

Node head;

public SinglyLinkedList(E[] element){//由指定数组中的多个对象构造单链表head = new Node();

Node List = head;

for(int i=0;i

List.next=new Node(element[i],null);

List=List.next ;

}

}

public SinglyLinkedList(SinglyLinkedList list){//以单链表list构造新的单链表,复制单链表

head=new Node();

Node list_new = head;

Node p=list.head;

if(p.data==null){

p=p.next;

list_new=list_new.next;

}

while(p!=null){

list_new.next =new Node(p.data,null);

list_new=list_new.next;

p=p.next ;

}

}

public void concat(SinglyLinkedList list){//将指定单链表list在当前单链表之后Node rear = null;

Node p = head;

Node q=list.head.next ;

if(p.data==null)

p=p.next ;

while(p!=null){

rear=p;

p=p.next ;

}

if(q==null){

q=q.next ;

}

rear.next=q;

}

public Node search(E element){//若查找到指定,则返回结点,否则返回null Node p=this.head;

Node temp=null;

if(p==null)

p=p.next ;

while(p.next!=null){

if(p.data==element){

temp=p;

}

p=p.next ;

}

return temp;

}

public boolean contain (E element){//以查找结果判断单链表是否包含指定对象boolean flag=false;

Node p=this.head;

Node temp=null;

if(p==null)

p=p.next ;

while(p!=null){

if(p.data==element){

flag=true;

}

p=p.next ;

}

return flag;

}

public boolean remove (E element){//移去首次出现的指定对象

Node p=this.head;

Node temp=null;

Node front=head;

boolean flag=false;

if(p==null)

p=p.next ;

while(p!=null && temp==null){

if(p.data==element){

temp=p;

flag=true;

break;

}

p=p.next ;

front=front.next ;

}

front=p.next ;

return flag;

}

public boolean replace (Object obj, E element){//将单链表中的obj对象替换为对象element

boolean flag=false;

if (obj!=null && element!=null){

Node p=this.head;

while (p!=null){

if (obj.equals(p.data)){

p.data = element;

flag = true;

}

p = p.next;

}

}

return flag;

}

public boolean equals(Object obj){//比较两条单链表是否相等

boolean flag=true;

SinglyLinkedList x=(SinglyLinkedList) obj;

Node t=x.head.next;

Node s=this.head.next;

while(t!=null&&s!=null){

if(t.data!=s.data){

flag=false;

break;

}

t=t.next;

s=s.next;

}

return flag;

}

}

package Q2;

import java.util.*;

public class Test {

static Integer[] x={3,5,8,11};

static Integer[] x1={3,5,8,11};

static Integer[] x2={2,6,8,9,11,15,20};

static SinglyLinkedList List1=new SinglyLinkedList(x);

static SinglyLinkedList List2=new SinglyLinkedList(x1);

static SinglyLinkedList List3=new SinglyLinkedList(x2);

public static void disList(SinglyLinkedList List){

for(Node temp=List.head.next;temp!=null;temp=temp.next){

System.out.printf("%-5d",temp.data);

8583 顺序栈的基本操作 时间限制:1000MS 内存限制:1000K 提交次数:530 通过次数:212 题型: 编程题语言: 无限制 Description 创建一个空的顺序栈,并实现栈的入栈、出栈、返回栈的长度、返回栈顶元素、栈的遍历等基本算法。请将下面的程序补充完整。 #include #include #define OK 1 #define ERROR 0 #define STACK_INIT_SIZE 100 // 存储空间初始分配量 #define STACKINCREMENT 10 // 存储空间分配增量 typedef int SElemType; // 定义栈元素类型 typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如OK等 struct SqStack { SElemType *base; // 在栈构造之前和销毁之后,base的值为NULL SElemType *top; // 栈顶指针 int stacksize; // 当前已分配的存储空间,以元素为单位 }; // 顺序栈 Status InitStack(SqStack &S) { // 构造一个空栈S,该栈预定义大小为STACK_INIT_SIZE // 请补全代码 } Status Push(SqStack &S,SElemType e) { // 在栈S中插入元素e为新的栈顶元素 // 请补全代码 }

Status Pop(SqStack &S,SElemType &e) { // 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR // 请补全代码 } Status GetTop(SqStack S,SElemType &e) { // 若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERROR // 请补全代码 } int StackLength(SqStack S) { // 返回栈S的元素个数 // 请补全代码 } Status StackTraverse(SqStack S) { // 从栈顶到栈底依次输出栈中的每个元素 SElemType *p = (SElemType *)malloc(sizeof(SElemType)); p = ______________________ //请填空 if(______________________)printf("The Stack is Empty!"); //请填空 else { printf("The Stack is: "); p--; while(______________________) //请填空 { printf("%d ", *p); ______________________ //请填空 } } printf("\n"); return OK; } int main() {

重庆文理学院软件工程学院实验报告册 专业:_____软件工程__ _ 班级:_____软件工程2班__ _ 学号:_____201258014054 ___ 姓名:_____周贵宇___________ 课程名称:___ 数据结构 _ 指导教师:_____胡章平__________ 2013年 06 月 25 日

实验序号 1 实验名称实验一线性表基本操作实验地点S-C1303 实验日期2013年04月22日 实验内容1.编程实现在顺序存储的有序表中插入一个元素(数据类型为整型)。 2.编程实现把顺序表中从i个元素开始的k个元素删除(数据类型为整型)。 3.编程序实现将单链表的数据逆置,即将原表的数据(a1,a2….an)变成 (an,…..a2,a1)。(单链表的数据域数据类型为一结构体,包括学生的部分信息:学号,姓名,年龄) 实验过程及步骤1. #include #include #include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define ElemType int #define MAXSIZE 100 /*此处的宏定义常量表示线性表可能达到的最大长度*/ typedef struct

{ ElemType elem[MAXSIZE]; /*线性表占用的数组空间*/ int last; /*记录线性表中最后一个元素在数组elem[ ]中的位置(下标值),空表置为-1*/ }SeqList; #include "common.h" #include "seqlist.h" void px(SeqList *A,int j); void main() { SeqList *l; int p,q,r; int i; l=(SeqList*)malloc(sizeof(SeqList)); printf("请输入线性表的长度:"); scanf("%d",&r); l->last = r-1; printf("请输入线性表的各元素值:\n"); for(i=0; i<=l->last; i++) { scanf("%d",&l->elem[i]); } px(l,i); printf("请输入要插入的值:\n");

实用文档《数据库系统》实验报告四学姓名实验时间2014-12-3 号实验学时数据库模式管理4 实验名称1. SQL Plus命令手册准 2. Oracle数据字典备 3. Oracle中的数据类型材 料1. 扩掌握在企业管理器中进行表的创建和管理的方法。 2. 利用企业管理器观察数据库的物理模式。展(实此部分内容不要求在实验室完成,不用写入实验报告。) 验Oracle 9i(实及以上版本)服务器 SQL Plus/ SQL Plus work sheet客户端验 环境1.掌握使用实SQL语句进行表的创建和管理的方法 2.验加深对关系数据库结构和数据完整性等概念的理解 目的1.实创建书上university数据库中所有的表,并使用命令观察用户所有表的表名、观察每张表的结构及每张表上的约束信息。验 select * from user_tables; 内 容及步骤 实用文档desc SECTION;

select * from user_constraints where table_name = 'SECTION'; 2. 修改表结构表中增加列存储教师家庭地址,其地址包括省、市、区、街instructor在(1) 道、门牌号等列,列的数据类型自己给出,列允许为空。varchar(30),street varchar(30),city add table alter instructor (province varchar(30),house_number varchar(30)); 实用文档

设置是否成功?原因是什么表中的姓名字段长度都改1studen(2) 5,能否成功?说明原因将该字段长度改alter table student modify name varchar(10); 修改成功 alter table student modify name varchar(50); 修改成功 实用文档

数据结构实验报告全集 实验一线性表基本操作和简单程序 1.实验目的 (1)掌握使用Visual C++ 6.0上机调试程序的基本方法; (2)掌握线性表的基本操作:初始化、插入、删除、取数据元素等运算在顺序存储结构和链表存储结构上的程序设计方法。 2.实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)认真阅读和掌握本章相关内容的程序。 (3)上机运行程序。 (4)保存和打印出程序的运行结果,并结合程序进行分析。 (5)按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果 实验代码: 1)头文件模块 #include iostream.h>//头文件 #include//库头文件-----动态分配内存空间 typedef int elemtype;//定义数据域的类型 typedef struct linknode//定义结点类型 { elemtype data;//定义数据域 struct linknode *next;//定义结点指针 }nodetype; 2)创建单链表

nodetype *create()//建立单链表,由用户输入各结点data域之值,//以0表示输入结束 { elemtype d;//定义数据元素d nodetype *h=NULL,*s,*t;//定义结点指针 int i=1; cout<<"建立一个单链表"<> d; if(d==0) break;//以0表示输入结束 if(i==1)//建立第一个结点 { h=(nodetype*)malloc(sizeof(nodetype));//表示指针h h->data=d;h->next=NULL;t=h;//h是头指针 } else//建立其余结点 { s=(nodetype*) malloc(sizeof(nodetype)); s->data=d;s->next=NULL;t->next=s; t=s;//t始终指向生成的单链表的最后一个节点

华南农业大学综合性、设计性实验报告 实验项目名称:数字电路与逻辑设计综合实验 实验项目性质:综合性、设计性实验 所属课程名称:数字电路与逻辑设计 开设时间: 2011学年第二学期 指导教师:万艳春 一、问题描述

实验题目要求它的投币口每次只能投入一枚五角或一元的硬币,投入一元五角硬币自动给出一杯饮料;投入两元(两枚一元的硬币)硬币后,再给出饮料的同时找回一枚五角硬币。故用x=0代表五角硬币,x=1代表一元硬币,y2,y1为1时分别表示给出一杯饮料和找回一枚五角硬币,至于投入的硬币数则用脉冲cp控制,投完硬币后用p=1表示确认。 二、逻辑设计 1.按照所需功能,画出状态图: 2.根据状态图画出真值表

3.画卡诺图 4.根据JK 特性方程Q n+1 =J Qn +k Qn 可得 122Q x k J == 211Q x K J == 三、 逻辑电路 1n 2n 1 n 2 n 1 1n Q Q x Q )x (Q Q ++=+ 112XQ Q Q Y2?= 2 Q X Y1= 2n 1n 2 n 1 n 2 1 +n Q Q x +Q x) +(Q =Q

四、效果与测试情况 清零后,x=0→CP→CP→CP→p=1,得到y2=1,y1=0; 清零后,x=0→CP→CP→x=1→CP→p=1,得到y2=1,y1=1; 清零后,x=0→CP→x=1→CP→p=1,得到y2=1,y1=0; 清零后,x=1→CP→x=0→CP→p=1,得到y2=1,y1=0; 清零后,x=1→CP→x=1→CP→p=1,得到y2=1,y1=1; 五、分析与讨论 本实验基本实现了所需功能,原理较简单,所用芯片也并不多; 不足的地方是每一次投币后都需确认,使过程稍显麻烦,若在 设计中能利用脉冲与输出相与,或许可以解决;而且当投币少 于1.5元时不会退回,功能较简单。 六、参考资料 [1]欧阳星明,于俊清. 数字逻辑(第四版),武汉:华中科技大学出版

华南农业大学期末考试试卷(A卷) 2012-2013学年第1 学期考试科目:Java程序设计 一、单项选择题(本大题共18 小题,每小题 2 分,共36 分) 1.下列关于Java语言的说法,不正确的是________: A. Java是面向对象的高级语言 B. Java是解释型语言,所以执行速度快 C. 一个类被编译成一个.class字节码文件 D. Java程序可以做到“一次编写,随处运行” 2.下列符合Java程序元素命名习惯的是________。 A. double Radius B. int lengthofarray C. class shape D. final double PI 3.下列不满足自动类型转换的赋值语句是________。 A.int c = ‘A’; B. long d = 165; C.float b = 26.3; D. double a = 13; 4.语句int a = 10, b = 20; b += a++; 执行结束后,a和 b的值分别是________。 A. 10,30 B. 11,30 C. 10,31 D. 11,31 5.下列程序段的输出结果是________。 int m = 4, n = 9; + n = ” + m + n); A. m + n = 13 B. m + n = mn C. m + n = m + n D. m + n = 49; 6.下列关于for和while这两种循环语句的说法,正确的是________ A.二者都是后置检查循环条件B.循环次数不确定使用for语句比较好 C.循环条件是布尔型表达式D.它们之间不能互相嵌套使用 7.下列程序片段执行后,y的值为________ int x = 4, y = 3; switch(x + 3){case 7: y = 7; case 8: y =8; default: y++;} A. 4 B. 7 C. 8 D. 9 8.定义二维数组a,不正确的是________ A. double a [3][3]; B. double a[][]; C. double[] a[]; D. double[][] a; 9.设int[][] b = {{26,53},{24,18,33},{29,81,51},{27,44,92,13}},则 ________ A. 数组一共有12个元素 B. b[2].length为4 C. b.length为12 D. b[3][2]等于81

数据结构基础及深入及考试 复习资料 习题及实验参考答案见附录 结论 1、数据的逻辑结构是指数据元素之间的逻辑关系。即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。 2、数据的物理结构亦称存储结构,是数据的逻辑结构在计算机存储器内的表示(或映像)。它依赖于计算机。存储结构可分为4大类:顺序、链式、索引、散列 3、抽象数据类型:由用户定义,用以表示应用问题的数据模型。它由基本的数据类型构成,并包括一组相关的服务(或称操作)。它与数据类型实质上是一个概念,但其特征是使用与实现分离,实行封装和信息隐蔽(独立于计算机)。 4、算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。 5、在数据结构中,从逻辑上可以把数据结构分成( C ) A、动态结构和表态结构 B、紧凑结构和非紧凑结构 C、线性结构和非线性结构 D、内部结构和外部结构 6、算法的时间复杂度取决于( A ) A、问题的规模 B、待处理数据的初态 C、问题的规模和待处理数据的初态 线性表 1、线性表的存储结构包括顺序存储结构和链式存储结构两种。 2、表长为n的顺序存储的线性表,当在任何位置上插入或删除一个元素的概率相等时,插入一个元素所需移动元素的平均次数为( E ),删除一个元素需要移动的元素的个数为( A )。 A、(n-1)/2 B、n C、n+1 D、n-1 E、n/2 F、(n+1)/2 G、(n-2)/2 3、“线性表的逻辑顺序与存储顺序总是一致的。”这个结论是( B ) A、正确的 B、错误的 C、不一定,与具体的结构有关 4、线性表采用链式存储结构时,要求内存中可用存储单元的地址( D ) A、必须是连续的 B、部分地址必须是连续的C一定是不连续的D连续或不连续都可以 5、带头结点的单链表为空的判定条件是( B ) A、head==NULL B、head->next==NULL C、head->next=head D、head!=NULL 6、不带头结点的单链表head为空的判定条件是( A ) A、head==NULL B、head->next==NULL C、head->next=head D、head!=NULL 7、非空的循环单链表head的尾结点P满足( C ) A、p->next==NULL B、p==NULL C、p->next==head D、p==head 8、在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是( B ) A、O(1) B、O(n) C、O(n2) D、O(nlog2n) 9、在一个单链表中,若删除p所指结点的后继结点,则执行( A )

数据结构(C语言版) 实验报告

专业班级学号姓名 实验1 实验题目:单链表的插入和删除 实验目的: 了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。 实验要求: 建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。 实验主要步骤: 1、分析、理解给出的示例程序。 2、调试程序,并设计输入数据(如:bat,cat,eat,fat,hat,jat,lat,mat,#),测 试程序的如下功能:不允许重复字符串的插入;根据输入的字符串,找到相应的结点并删除。 3、修改程序: (1)增加插入结点的功能。 (2)将建立链表的方法改为头插入法。 程序代码: #include"" #include"" #include"" #include"" typedef struct node . . 示意图:

head head head 心得体会: 本次实验使我们对链表的实质了解更加明确了,对链表的一些基本操作也更加熟练了。另外实验指导书上给出的代码是有一些问题的,这使我们认识到实验过程中不能想当然的直接编译执行,应当在阅读并完全理解代码的基础上再执行,这才是实验的意义所在。

实验2 实验题目:二叉树操作设计和实现 实验目的: 掌握二叉树的定义、性质及存储方式,各种遍历算法。 实验要求: 采用二叉树链表作为存储结构,完成二叉树的建立,先序、中序和后序以及按层次遍历 的操作,求所有叶子及结点总数的操作。 实验主要步骤: 1、分析、理解程序。 2、调试程序,设计一棵二叉树,输入完全二叉树的先序序列,用#代表虚结点(空指针), 如ABD###CE##F##,建立二叉树,求出先序、中序和后序以及按层次遍历序列,求 所有叶子及结点总数。 实验代码 #include"" #include"" #include"" #define Max 20 ertex=a; irstedge=NULL; irstedge; G->adjlist[i].firstedge=s; irstedge; R[i] 留在原位

华南农业大学期末考试试卷(A 卷) 2015-2016学年第一学期 考试科目: 数据库系统 考试类型:闭卷 考试时间: 120 分钟 学号 姓名 年级专业 Question 1: true-false question (30 points) For each of the following statements, indicate whether it is TRUE or FALSE (Using T for TRUE and F for FALSE). You will get 1 point for each correct answer, and 0 point for each wrong or blank answer. BE SURE TO WRITE YOUR ANSWER IN THE ANSWER SHEET! 1. Database systems are designed for both defining storage structures and providing mechanisms for manipulation of information. 2. Comparing with database system, file-processing system has many disadvantages such like data redundancy and consistency, concurrent-access anomalies. 3. Physical data independence in database means that the user working on the logical level need know nothing about complexity of the physical level of database. 4. The overall design of database is the database schema, while collection of data stored in the database at a particular moment is an instance of the database. 5. The Entity-Relationship data model is often used in logical

实验1 创建、编译和运行Java程序 17268 计算两个整数的和 从键盘输入两个整数,计算并输出两个整数的和。 import java.util.Scanner; public class Main { public static void main(String[] args) { int a,b; Scanner input = new Scanner(System.in); a=input.nextInt(); b=input.nextInt(); int c = a + b; System.out.println(c); } } 17269 输出两个整数中的较大的值 从键盘输入两个整数,判断并输出两个整数中较大的值。 import java.util.Scanner; public class Main { public static void main(String[] args) { int a,b; Scanner input = new Scanner(System.in); a=input.nextInt(); b=input.nextInt(); if(a>b) System.out.println(a); else System.out.println(b); } } 实验2 基本数据类型、运算和表达式18135 在显示屏上显示指定字符 要求编写一个程序,在显示屏上显示如下内容。注:类名必须为Main(大写M) C:\ABC.TXT is "file" public class Main { public static void main(String[] args) { System.out.print("C:\\ABC.TXT is \"file\""); } }

第1页 华南农业大学期末考试答案(A 卷) 2017-2018学年第 2 学期 考试科目: Java 语言程序设计 考试类型:(闭卷) 考试 考试时间: 120 分钟 学号 姓名 年级专业 一、单项选择题(本大题共20题,每小题2分,共40分) 二、判断题(本大题共20题,每小题2分,共40分,正确选A ,错误选B ) 三、填空题(本大题共7小题,每空1分,共10分)

四、程序阅读题(本大题共5小题,每小题2分,共10分) 8. 输出: 1*2*3*4*5*6* 9. 输出: a=25 10. 输出: k=6 11. 输出: 1 1 2 12 3 123 4 (表示一个空白的占位符,有错的话酌情扣分) 12. 输出: Wang!Wang! Miao~Miao~ 五、编写程序题(本大题共2小题,第13题10分,第14题10分,共20分) 13. 考察基本的程序结构—循环 public class JavaApplication35 { public static void main(String[] args) { int sum = 0; for (int i=1; i<=100; i++){ sum += 2*i-1; } System.out.println("前100个奇数的和为"+sum+",平均值为"+sum/100); } } //有错的话酌情扣分 第2页

第3页 14. 考察类的定义(数据域封装、构造方法) public class Ellipse { private double a; private double b; public double getA() { return a; } public void setA(double a) { this.a = a; } public double getB() { return b; } public void setB(double b) { this.b = b; } // 以上2个属性setter 和getter 各2个,错一个扣1分,直到4分扣完 public Ellipse() { this(0.0,0.0); } public Ellipse(double a, double b) { this.a = a; this.b = b; } // 以上两个构造方法,每个2分,一共4分 public double getArea(){ return Math.PI*a*b; } // 计算面积方法2分 }

华南农业大学期末考试参考答案(A卷) 201672018年第1 学期考试科目:Java程序设计 一、单项选择题(本大题共20 小题,每小题 2 分,共40 分) 二、判断题(本大题共10小题,每小题1分,共10分,正确选A,错误选B) 三、程序阅读题(本大题共4小题,共20分) 1. (5分) 部分正确可酌情给分 * ** *** **** ***** 2.(5分) 部分正确可酌情给分 循环9次(2分) 结果(3分): 3 5 7 9 3. (5分) 部分正确可酌情给分 1 2 3 4 5 6 7 8 9 0

1 1 3 3 5 5 7 7 9 -1 4. (5分) 部分正确可酌情给分 Woof woof Miiaooww 四、编写程序题(本大题共3小题,共30分) 1. (10分) 请按步骤给分 import java.util.Scanner; public class JavaApplication2 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int a = in.nextInt(); int n = in.nextInt(); int sum = 0; int x = a; for(int i=1;i<=n;i++) { sum = sum + x; x = x*10+a; } System.out.print(sum); } } 2. (10分) 请按步骤给分 public class JavaApplication2 { public static void main(String[] args) { int[] a = new int[100]; int num = 0;

数据结构与算法分析课程设计报告 课题名称: A Text Editor Imlementation 提交文档学生姓名:苟丁 提交文档学生学号: 0843042229 同组成员名单:无 指导教师姓名:孙界平 指导教师评阅成绩: 指导教师评阅意见: . . 提交报告时间:2010 年 5 月 7 日

1. 实验题目:带括号的算术表达式求值 2. 实验的目的和要求: 1.采用C++的ASCII码文件和串函数实现; 2.熟练掌握串运算的应用; 3.熟练掌握计算机系统的基本操作方法,了解如何编辑、编译、链接和运行一 个C++程序; 4.上机调试程序,掌握查错、排错使程序能正确运行 3.实验的环境: 1、硬件环境:联想笔记本电脑,Intel(R) Pentium(R) Dual T3400 ,2GB内存 2、软件环境:Windows XP 下的Microsoft Visual Studio 2008 4.算法描述: ●具体操作与函数描述 (1)编辑一个文本文件,命名为text.txt. (2)函数run()提供给用户选择符的输入:w,r,I,d,f,c,q,h,n,p,b,e,g,v. 用户可以选择H选择符寻求帮助,得知操作符分别代表的动作。 (3) R代表函数Read()将文本读入缓冲区,缓冲区以前的任何内容都将将消失。 (4) W代表函数Write()将缓冲区的内容写入文本文件。 (5) I代表函数Insert()插入新行,用户可以在适当的提示下键入新行并提供新行。 (6) D代表delete()行数所执行的删除操作,可以删除当前行,并进入下一行。 (7) F代表函数findChar(),用于查找目标行。 (8) C代表函数changLine(),将用户请求的字符串修改成用户请求的替换文本,可选择的是仅在当前行中有效。 (9) Q代表函数quit(),用户执行此命令可以退出编辑。 (10)N代表函数next(),用户可以从当前行移到下一行。 (11)P代表函数pre(),用户可以从当前行移到下一行。 (12)E代表end(),可以移到最后一行。 (13)G代表go(),用户可以指定到选择的行。 (14)V查看缓冲区的全部内 ●测试程序说明:

2011~2012第一学期数据结构实验报告 班级:信管一班 学号:201051018 姓名:史孟晨

实验报告题目及要求 一、实验题目 设某班级有M(6)名学生,本学期共开设N(3)门课程,要求实现并修改如下程序(算法)。 1. 输入学生的学号、姓名和 N 门课程的成绩(输入提示和输出显示使用汉字系统), 输出实验结果。(15分) 2. 计算每个学生本学期 N 门课程的总分,输出总分和N门课程成绩排在前 3 名学 生的学号、姓名和成绩。 3. 按学生总分和 N 门课程成绩关键字升序排列名次,总分相同者同名次。 二、实验要求 1.修改算法。将奇偶排序算法升序改为降序。(15分) 2.用选择排序、冒泡排序、插入排序分别替换奇偶排序算法,并将升序算法修改为降序算法;。(45分)) 3.编译、链接以上算法,按要求写出实验报告(25)。 4. 修改后算法的所有语句必须加下划线,没做修改语句保持按原样不动。 5.用A4纸打印输出实验报告。 三、实验报告说明 实验数据可自定义,每种排序算法数据要求均不重复。 (1) 实验题目:《N门课程学生成绩名次排序算法实现》; (2) 实验目的:掌握各种排序算法的基本思想、实验方法和验证算法的准确性; (3) 实验要求:对算法进行上机编译、链接、运行; (4) 实验环境(Windows XP-sp3,Visual c++); (5) 实验算法(给出四种排序算法修改后的全部清单); (6) 实验结果(四种排序算法模拟运行后的实验结果); (7) 实验体会(文字说明本实验成功或不足之处)。

三、实验源程序(算法) Score.c #include "stdio.h" #include "string.h" #define M 6 #define N 3 struct student { char name[10]; int number; int score[N+1]; /*score[N]为总分,score[0]-score[2]为学科成绩*/ }stu[M]; void changesort(struct student a[],int n,int j) {int flag=1,i; struct student temp; while(flag) { flag=0; for(i=1;ia[i+1].score[j]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; flag=1; } for(i=0;ia[i+1].score[j]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; flag=1;

实用文档 《数据库系统》实验报告五

实用文档 salary表中表具有查询权限,A.course对A.instructor对设置同学同学2. AB 使用命令检查授权是否成功。B字段具有更新权限;同学grant select on course to cs113; 实用文档

表具有插入数据、删除数据的权限,同对B. instructorB3. 同学授权同学A 用命令试验能否完成相应操作。学Aselect * from cs113.instructor; insert into cs113.instructor values(21313,'JDY','Comp. Sci.',745363); select * from cs113.instructor; cs113.instructor where salary = 92000; delete from select * from cs113.instructor; 实用文档

表具有增、删、改、查的权限,并允许他对B. studentB5. 同学授权同学A并试验能否将权限授予A将权限授权给其它同学。同学验证授权是否成功,。C其它同学(例如同学) 实用文档select * from cs113.student; insert into cs113.student values(13221,'KJDFH','Comp. Sci.',123); update cs113.student set tot_cred = 456 where ID = 13221; select * from cs113.student; delete from cs113.student where ID = 13221; select * from cs113.student;

华南农业大学期末考试试卷(A卷) 2011-2012学年第1 学期考试科目:数据结构(JA V A) 考试类型:(闭卷)考试考试时间:120分钟 学号姓名年级专业2010级信管班 答案请写到答题纸上,写在试卷上无效 一、单选题(本大题共10小题,每小题2分,共20分) 1.不考虑优先队列,已知入队序列为{A,B,C,D},可能的出队序列为:() A. {D,B,C,A} B. {A,B,C,D} C. {A,D,C,B} D. {A,C,D,B} 2.已知结点数为1001的完全二叉树,其叶子结点个数为:() A.500 B.501 C.602 D.1 3.具有8000个结点的二叉树,其高度至少为:() A.10 B.11 C. 12 D.13 4.设一棵哈夫曼树有n个非叶子结点,该树共有()个节点 A.n B.2n-1 C.2n+1 D. 2n 5.归并排序的空间复杂度是:() A. O(nlog2n) B. O(n2) C. O(log2n) D. O(n) 6.以下程序时间复杂度为:() int n=8,m=1024,count=1024; for (int i=m; i>=1; i--) count++; A.O(1) B. O(m) C. O(log2m) D. O(mlog2m) 7.式n+log2n+n*n*n的时间复杂度为:() A.O(1) B. O(n3) C. O(n+log2n) D. O(log2n) 8.衡量算法的标准有:() A.时间复杂度和空间复杂度 B.输入和输出 C.有穷性和确定性 D.可行性 9.已知入栈顺序为{a,b,c,d,e,f,g},下列哪个是可能的出栈顺序:() A. {d,e,c,f,b,g,a} B. {f,e,g,d,a,c,b} C. {e,f,d,g,b,c,a} D. { e,f,d,g,b,a,c } 10.已知一个顺序循环队列最多能容纳60个元素,当前有58个元素时,如果再 插入5个元素,该队列有多少空元素:() A.-3 B.63 C.5 D.57 二、填空题(本大题共10小题,每空1分,共20分) 1.软件设计是计算机学科各个领域的核心。软件设计时要考虑的首要问题是数 据的表示、组织和处理方法。______和______是软件系统设计的核心。 2.双链表的插入和删除操作:q = new DLinkNode(x); ______;q.next = p;p.prev.next = q; ______。 3.两个顺序表相等是指它们各对应______并且______。 4.设一棵二叉树的叶子结点数为n0,2度结点数为n2,则n0=______。N个节 点完全二叉树的高度是______

数据结构实验报告 实验名称:实验二——车厢重排 学生姓名: 班级: 班内序号: 学号: 日期: 1.实验要求 (1)、实验目的: ①进一步掌握指针、模板类、异常处理的使用 ②掌握栈的操作的实现方法 ③掌握队列的操作的实现方法 ④学习使用栈解决实际问题的能力 ⑤学习使用队列解决实际问题的能力 (2)、实验内容: 一列货车共有n节车厢,每个车厢都有自己的编号,编号范围从1~n。给定任意次序的车厢,通过转轨站将车厢编号按顺序重新排成1~n。转轨站共有k个缓冲轨,缓冲轨位于入轨和出轨之间。开始时,车厢从入轨进入缓冲轨,经过缓冲轨的重排后,按1~n的顺序进入出轨。缓冲轨按照先进先出方式,编写一个算法,将任意次序的车厢进行重排,输出每个缓冲轨中的车厢编号。 2. 程序分析 2.1 存储结构 链队列: 2.2 关键算法分析 (1)、入队操作:(时间复杂度为O(1)) ①.建立新结点:rear->next=new Node ②.移动队尾指针:rear=rear->next

③.赋值:rear->data=x ④.将新结点的next指针域赋为空:rear->next=NULL 入队结构示意图如下: (2)、出队操作:(时间复杂度为O(1)) 算法伪代码如下: ①.保存队头元素指针:Node*p=front->next; ②.如果为空队则抛出异常:if(!p)throw"下溢"; ③.原队头元素出列:front->next=p->next; ④.保存队头数据:T x=p->data; ⑤.释放原队头:delete p; ⑥.若队列变为空队,修改队尾指针:if(!(front->next))rear=front; ⑦.返回出队数据:return x; 出队结构示意图如下: (3)、查找队头元素:(时间复杂度为O(1)) 算法分析:1.如果是空队列,则抛出异常:if (!(front->next))throw"上溢"; 2. 否则返回队头元素:return front->next->data; (4)、查找队尾元素:(时间复杂度为O(1)) 算法分析:1.如果是空队列,返回0:if(rear==front) return 0; 2.否则返回队尾元素return rear->data; (5)、车厢重排函数:(时间复杂度为O(n)) 算法分析:1. 建立k+2个新队列:LinkQueue *rail; rail=new LinkQueue[k+2] 2.将n节乱序的车厢放进入轨:cin>>arr[j]; rail[k].EnQueue(arr[j]) 3. 将入轨中的车厢放进缓冲轨中,设置一个变量判断车厢是否成功放进缓冲轨: while((i

《数据结构实验指导书》答案 实验一: 1、请编写函数int fun(int *a, int *b),函数的功能是判断两个指针a和b所指存储单元的值 的符号是否相同;若相同函数返回1,否则返回0。这两个存储单元中的值都不为0。在主函数中输入2个整数、调用函数fun、输出结果。 #include int fun(int *a, int *b) { if (*a*(*b)>0) return(1); else return(0); } main() { int x,y; scanf("%d%d",&x,&y); if (fun(&x,&y)) printf("yes\n"); else printf("no"); } 2、计算1+2+3+……+100,要求用指针进行设计。即设计函数int fun(int *n)实现求 1+2+3+……+*n,在主函数中输入、调用、输出结果。 #include int fun(int *n) { int i,sum=0; for (i=1;i<=*n;i++) sum+=i; return(sum); } main() { int x,sum; scanf("%d",&x); printf("the sum is %d\n",fun(&x)); } 3、函数的功能是求数组a中最大数的位置(位序号)。在主函数中输入10个整数、调用函

数fun、输出结果。 #define N 10 #include void input(int *a,int n) { int i; for (i=0;i*max) max=a+i; return(max-a); } main() {int a[N],maxi; input(a,N); maxi=fun(a,N); printf("\n the max position is %d\n",maxi); } 4、请编写函数fun(int *a,int n, int *odd, int *even),函数的功能是分别求出数组a中所有奇数之和和所有偶数之和。形参n给出数组中数据的个数;利用指针odd和even分别返回奇数之和和偶数之和。在主函数中输入10个整数、调用函数fun、输出结果。 #define N 10 #include void input(int *a,int n) { int i; for (i=0;i

相关文档
相关文档 最新文档