JAVA实训报告

时间:2024.4.21

Java数据结构课程设计报告

   

学生姓名:付常军    号:200941903224

年级专业:09级计算机科学与技术2

指导老师  戴小鹏      院:东方科技学院

JAVA实训报告

付常军

       (湖南农业大学东方科技学院,长沙 410128)

摘  要:JAVA实训课程的内容,包括对JAVA的初步了解,运用JAVA实现并解决相关问题等。

关键词:JAVA,实训,数据结构,核心代码

一、前言

本周我们依学校安排,很荣幸参加了由向明老师主讲,赵丹老师助理的JAVA实训。在这一周的时间里,我对JAVA这门语言有了一定的了解,也初步掌握了JAVA的一些基本技能,收获很大。通过这一周的学习,激发了我对编程的兴趣,也让我也了一定的编程能力。

二、实训内容

实训内容安排很合理,从基本的变量定义,初始化到类的继承等面向对象高级应用,使我们对java有了一个较系统的了解,并能用java实现一些简单的数据结构。

1.第一天

初步了解JAVA的发展领域,实用价值等内容;

了解JAVA虚拟机;

编写了第一个JAVA程序“HELLO WORLD”

JAVA中的变量和数据类型,数据转换,程序控制结构,回收机制等

2.第二天

JAVA中数组的声明,初始化以及一些其他的基本运用

3.第三天

JAVA中的对象的特征;

类与对象的区别;

访问权限,继承,借口与抽象类;

4.第四天

在JAVA中数据结构的基本运用;

5.第五天

用JAVA实现队列,链表,栈等基本的数据结构。

三、实训核心代码及截图

1.用JAVA实现队列

package Queue;

publicclass SqQueue {

    publicint MAX = 100;

    publicint data[]= newint[MAX];

    publicint front= 0 ;

    publicint rear= 0 ;

}

package Queue;

publicclass Queue {

    private SqQueue q = new SqQueue();

    public Queue(){

    }

    publicboolean QueueEmpty(){

       return (q.rear==q.front);

    }

    publicint QueueLenth(){

       return (q.rear - q.front + q.MAX )% q.MAX;

    }

    publicvoid enQueue(int e){

       if((q.rear + 1) % q.MAX == q.front)

       {

           System.out.println("队满,不能进队");

           return ;

       }

       q.rear = (q.rear + 1) % q.MAX;

       q.data[q.rear]=e;

       System.out.println("元素" + e + "已成功进队");

    }

    publicint deQueue() {

       if(q.front == q.rear){

           System.out.println("队空,不能出队");

           return 0;

       }

       q.front = ( q.front +1 ) % q.MAX;

       return q.data[q.front];

    }

   

}/**

 *

 */

package Queue;

/**

 * @author 实验教学中心

 *

 */

public class main1 {

      /**

       * @param args

       */

      public static void main(String[] args) {

       // TODO Auto-generated method stub

       int e;

       Queue q ;

       q= new Queue();

       System.out.println("(1)初始化队列");

       System.out.println("(2)依次进队元素 1,2,3");

       q.enQueue(1);

       q.enQueue(2);

       q.enQueue(3);

       if(q.QueueEmpty()){

       System.out.println("(3)队列为空");

       }

       else{

           System.out.println("(3)队列非空");

       }

       int t=0;

       for(e=0;e<4;e++){

           t=q.deQueue();

           if(t!=0)

           {

              System.out.println("(4)出队一个元素" + t);

           }

       }

       System.out.println("(5)队列元素的个数" + q.QueueLenth());

       System.out.println("(6)依次进队元素 7,8,9");

       for(e=7;e<10;e++){

           q.enQueue(e);

       }

       System.out.println("(7)队列元素的个数" + q.QueueLenth());

       System.out.println("(8)出队的序列" );

       while(!q.QueueEmpty()){

           t=q.deQueue();

           if(t!=0)

           {

              System.out.println("(4)出队一个元素" + t);

           }         

       }

      }

}

2.用JAVA实现栈

栈:

package myPack;

import java.util.Scanner;

publicclass text {

    /**

     * @param args

     */

    publicstaticvoid main(String[] args) {

       Scanner scan=new Scanner(System.in);

       stack obj=new stack();

           System.out.println("你想往栈里面输几个数?");

           int temp=scan.nextInt();

           for(int i=0;i<temp;i++)

           {

              int n=scan.nextInt();

              obj.push(n);

           }

              System.out.println("判断栈是否为空!");

           boolean y=obj.isempty();

           System.out.println(y);

           System.out.println("现在获得栈顶元素!");

           System.out.println(obj.gettoop());

           System.out.println("现在栈元素出栈!");

           for(int i=0;i<temp;i++)

           System.out.println(obj.pop());

    }

   

}

package myPack;

publicclass stack {

    privateint a[] = newint[100];

    privateint top;

    privateint n;

    public stack() {

       top = 0;

    }

    publicvoid push(int i) {

       a[top] = i;

       n = top;

       top++;

    }

    publicint pop() {

       if(top==-1)

       return 0;

       return a[--top];

    }

    publicvoid display() {

       int i = 0;

       for (i = n; i >= 0; i--)

           System.out.print(a[i]);

    }

    publicint gettoop() {

       return a[n];

    }

    publicboolean isempty() {

       if (top != 0)

           returnfalse;

       returntrue;

    }

}

运行结果:

3.用JAVA实现单链表

package mt

public class linked {

       int data;

       linked next;

       linked pre;

package mt;

public class linkined {

       linked head = new linked();

       linked p = new linked();

       int size = 0;

       int binary;

       public linkined() {

              head.next = null;

              head.pre = null;

              p = head;

       }

       public void add(int d) {

             

              linked n = new linked();

              n.data = d;

              p.next = n;

              n.next = null;

              // n.pre=null;

             

              p =n;

              size++;

       }

       public int get(int j) {

              linked p = new linked();

              p = head;

              if (size <= 0) {

                     System.out.println("err");

                     return -1;

              } else {

                     for (int i = 1; i <=j; i++) {

                           

                            p = p.next;

                     }

                     return p.data;

              }

       }

       public void delete(int j) {

              linked p = new linked();

              p = head;

              if (j < 2 || j > binary)

                     System.out.println("error!");

              else {

                     linked n = new linked();

                     int i = 0;

                     while (i + 1 != j) {

                            p = p.next;

                            i++;

                     }

                     n = p.next;

                     p.next = n.next;

              }

       }

       public void display() {

              linked p = new linked();

              p = head;

              while (p.next!= null) {

                     p = p.next;

                     System.out.print(p.data);

              }

              System.out.print("\n");

       }

       public void update(int j,int n) {

              linked p = new linked();

              p=head;

              if (size <= 0) {

                     System.out.println("err");

             

              }

              else{

                     for(int i=1;i<size;i++)

                     {

                            p=p.next;

                        if(i==j)

                        {

                             p.data=n;

                            // System.out.println(" p.data:"+ p.data);

                        }

                      

                     }

              }

       }

}

package mt;

import java.util.Scanner;

public class Text {

       /**

        * @param args

        */

       public static void main(String[] args) {

              Scanner scan=new Scanner(System.in);

              linkined obj=new linkined();

              System.out.println("请输入你要做多长的链表");

              int temp=scan.nextInt();

              obj.binary=temp;

              for(int i=0;i<temp;i++)

              {

                     int t=scan.nextInt();

                     obj.add(t);

              }

              obj.display();

              System.out.println("你想获得第几个元素");

              temp=scan.nextInt();

              System.out.println(obj.get(temp));

              System.out.println("你想修改第几个元素");

              temp=scan.nextInt();

              int n=scan.nextInt();

              obj.update(temp, n);

              obj.display();

              System.out.println("你想删除第几个元素");

              temp=scan.nextInt();

              obj.delete(temp);

              obj.display();

       }

      

}

4.}用JAVA实现双链表

双链表:

package myPack;

import java.util.Scanner;

publicclass text {

    /**

     * @param args

     */

    publicstaticvoid main(String[] args) {

       Scanner scan=new Scanner(System.in);

       doublelinkined obj=new doublelinkined();

       System.out.println("你想做多长的双链表!");

       int temp=scan.nextInt();

        //obj.binary=temp;

       for(int i=0;i<temp;i++)

       {

           int n=scan.nextInt();

           obj.add(n);

       }

       obj.display();

       System.out.println("你想删除第几个元素!");

       obj.delete(scan.nextInt());

       obj.display();

       System.out.println("你想获得第几个元素!");

       System.out.println(obj.get(scan.nextInt()));

       System.out.println("你想更新第几个元素!");

        temp=scan.nextInt();

       int n=scan.nextInt();

       obj.update(temp, n);

       obj.display();

    }

}

package myPack;

publicclass doublelinkined extends linkined {

    linked head = new linked();

    linked last = new linked();

    linked p = new linked();

    int binary;

    privateint size = 0;

    public doublelinkined() {

       head.pre = head.next = null;

       last.next = null;

       p = head;

    }

    @Override

    publicvoid add(int d) {

       linked n = new linked();

       n.data = d;

       p.next = n;

       n.next = null;

       p = n.pre;

       p = n;

       last = p;

       size++;

       // super.add(d);

    }

    @Override

    publicvoid delete(int i) {

       // super.delete(j);

       linked p = new linked();

       p = head;

       int j = 0;

       while (j < i - 1) {

           j++;

           p = p.next;

       }

       linked n = new linked();

       n = p.next;

       p.next = n.next;

       p.next.pre = n;

    }

    @Override

    publicvoid display() {

       // super.display()

       linked p = new linked();

       p = head;

       while (p.next != null) {

           p = p.next;

           System.out.print(p.data + " ");

       }

        System.out.print("\n");

    }

    @Override

    publicint get(int j) {

       // return super.get(j);

       linked p = new linked();

       p = head;

       if (j <= binary / 2) {

           if (size <= 0) {

              System.out.println("err");

              return -1;

           } else {

              for (int i = 1; i <= j; i++) {

                  p = p.next;

              }

              return p.data;

           }

       } else {

           linked n = new linked();

           n = last;

           if (size <= 0) {

              System.out.println("err");

              return -1;

           } else {

              for (int i = binary - 1; i >= j; i--)

                  n = n.next;

              return n.data;

           }

       }

    }

    @Override

    publicvoid update(int j, int n) {

       // super.update(j, n);

       linked p = new linked();

       p = head;

       if (j <= binary / 2) {

           if (size <= 0) {

              System.out.println("err");

           } else {

              for (int i = 1; i < size; i++) {

                  p = p.next;

                  if (i == j) {

                     p.data = n;

                     // System.out.println(" p.data:"+ p.data);

                  }

              }

           }

       } else {

           linked y = new linked();

           y = last;

           if (size <= 0) {

              System.out.println("err");

           } else {

              for (int i = binary - 1; i >= 0; i--) {

                  y = y.next;

                  if (i == j)

                     y.data = n;

              }

           }

       }

    }

}

运行结果:

四、结论

通过这次JAVA实训,使我在掌握++的基础上有重新了解了一门高级语言,这使得我对编程产生了更浓厚的兴趣C,也使我更深入地了解了面向对象编程。通过用JAVA实现一些简单的数据结构,也开拓了我的思维,使我对算法产生了浓厚的兴趣。我意识到数据结构是程序设计的主要部分。

致  谢

在向明老师与赵丹老师的教导下,我顺利完成了这次的数据结构JAVA实训,获益匪浅,在此郑重感谢两位老师!

                                                                                                             付常军

                                                                                                         2010.12.10

更多相关推荐:
cad实习报告范文

cad实习报告范文cadgt实习报告gt范文一画了几天的图纸真是感慨颇多要画好一份图纸不要急于画首先要好好的观察它观察它的布局由哪几类线构成的观察好就可以开工啦一般来说开始画时要建立几个图层一定要按照图纸上给的...

cad实训心得1500字

cad实训心得1500字cad实训心得1500字一CAD实训总结为期一周的AutoCAD终于完了好呛啊每天不用上课起来就去机房画图回到宿舍还是画图可以说这个星期除了吃喝拉撒其他时间都在干同一件事画图不夸张的说连...

Cad实训报告

Cad实训报告为期一周的AutoCAD终于完了好呛啊每天不用上课起来就去机房画图回到宿舍还是画图可以说这个星期除了吃喝拉撒其他时间都在干同一件事画图不夸张的说连做梦都梦到在画图不过效果是显而易见实训的目的是让我...

cad实训报告

河南理工大学高等职业学院建筑CAD技能训练报告系别建筑工程专业建筑工程技术班级建筑11-1班姓名20##年11月日建筑CAD技能训练任务书一、训练目的通过本次技能训练,使学生进一步熟悉建筑制图国家标准的有关规定…

cad实习报告

CAD实习报告经过这学期的理论和上机学习使我们对有了基本掌握对于CAD这个课程学习也有了一个系统的学习和掌握我学到的东西很多首先对于电脑绘图不熟悉的我有很大的帮助现在的我用AutoCAD绘图的速度快了很多而且知...

cad实训心得体会

cad实训心得体会20xx年下学期第十六周,在杨志勤老师的指导下,我们班进行了为期一周的CAD制图集中实训,主要是针对轴类、箱体类和叉架类等几种常见零件的绘制,通过实训,进一步掌握CAD的应用,增强动手cao作…

建筑cad软件应用实训报告

建筑cad软件应用实训报告一、实训目的AutoCAD是一种实用性很强的绘图软件,它可以快速,准确,方便的绘制和编辑出个各种工程图样,是工程专业的技术人员必备的基本技能。通过本次实训,要求学生熟练的掌握各种绘图命…

cad实习报告

图形图像制作09531班CAD实习报告陈姣前沿图形图像制作专业第二学期开的机械制图专业两周的实习课程是为巩固一学期的学习成果和熟练掌握并灵活运用所学知识绘制出正规的电气电路图从而为以后绘制复杂的图形打下坚实的基...

cad实习报告

20xx20xx学年第二学期实习名称cad实习专业学号姓名实习地点计算机实践中心实习时间实习成绩指导教师签字西南交通大学峨眉校区20xx年7月12日注后附纸若干内容包括实习目的和要求实习内容实习方式和安排实习完...

cad实习报告

cad实习报告cadgt实习报告一时间地点根据学校政策我们建筑装饰班在本学期第18周CAD上机实习主要是老师组织学生在学校阅览室内画建筑图纸二实行情况我们班由我们的AutoCAD认课老师卢燕卢老师指导学生们都在...

cad实习报告

20xx20xx学年第2学期实习名称AutoCAD绘图软件实习专业学号姓名实习地点网络中心四楼实习时间七月九日七月十一二日实习成绩指导教师签字西南交通大学峨眉校区二一三年七月十一二日一实习目的1巩固和进一步加学...

西南交大cad实习报告

20xx20xx学年第2学期实习名称AUTOCAD实习专业学号姓名实习地点网络中心三楼机房实习时间实习成绩指导教师签字西南交通大学峨眉校区20xx年7月12日AUTOCAD实习情况汇总一实习目的AUTOCAD是...

cad实训报告范文(2篇)