首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

容易谈谈数组、链表和队列

2013-08-01 
简单谈谈数组、链表和队列/* * 学生类定义 */public class Student {private String nameprivate int scor

简单谈谈数组、链表和队列
/* * 学生类定义 */public class Student {private String name;private int score; public Student(String name,int score){this.name = name;this.score = score;}public void show(){System.out.println("学生"+name+"的分数是:"+score);}}

?定义队列的接口,使得队列能够实现相关功能

/* * 自定义队列接口实现 */public interface ArrayList {  //加入一个学生对象public void add(Student st);//得到一个学生对象public Student get(int index);//得到队列的长度public int size();}

?定义学生队列,实现队列接口的方法

public class StList implements ArrayList {//队列初始 的数组,长度为零private Student[]srcA = new Student[0];//添加学生对象的方法public void add(Student st) {//新建一个数组,长度比原数组多1Student []destA = new Student[srcA.length+1];//将要加入的对象放在新建数组的最后一个位置destA[srcA.length] = st;//将原数组的所有元素都放在新的数组当中for(int i=0;i<srcA.length;i++){destA[i] = srcA[i];}//原来的数组指向新的数组    srcA = destA;}    /*     * 取得队列中指定的对象     * @param index     * @return 一个学生对象     *      */     public Student get(int index) {Student st = srcA[index];return st;}/* * 得到队列的长度 */public int size() {// TODO Auto-generated method stubreturn srcA.length;}}

?主函数控制类,测试相关内容

public class Manager {    public static void main(String [] args){    //创建队列对象    ArrayList al = new StList();    for(int i=0;i<5;i++){    Student st = new Student("学生"+i,i+10);    al.add(st);   }    printStudent(al);    }private static void printStudent(ArrayList al) {// TODO Auto-generated method stubSystem.out.println(al.size()+"个学生的信息如下");for(int t=0;t<al.size();t++){Student stu = al.get(t);stu.show();}}}

?这样应该就知道数组实现的队列是什么样子了吧。

?

<用链表实现队列>

首先是结点类

/* * 结点类 */public class LinkNode {    //链表储存的数据private Object obj;//下一个结点的指向private LinkNode next;//在创建结点对象的时候就传入结点中的数据public LinkNode(Object obj){this.obj = obj;}//获取结点的方法public Object getObj(){return  obj;}//给当前结点赋值public void setObj(Object obj){this.obj=obj;}//指向下一个结点的方法public LinkNode getNext(){return next;}//给下一个结点赋值public void setNext(LinkNode next){this.next = next;}}

?实现链表

/* * 实现链表 */public class LinkList{ private LinkNode root;//入口public static void main(String []args){LinkList list = new LinkList();//创建链表    LinkNode root = list.createlink();   //遍历    list.printLinkList(list.root);}       //遍历结点的方法private void printLinkList(LinkNode root) {// TODO Auto-generated method stubif(null!=root){Object data = root.getObj();System.out.println(data);LinkNode temp = root.getNext();printLinkList(temp);}}    //创建结点的方法private LinkNode createlink() {// TODO Auto-generated method stubString s = "根节点";root = new LinkNode(s);LinkNode n1 = new LinkNode("第一结点");LinkNode n2 = new LinkNode("第二结点");LinkNode n3 = new LinkNode("第三结点");LinkNode n4 = new LinkNode("第四结点");LinkNode n5 = new   LinkNode("第五节点");root.setNext(n1);n1.setNext(n2);n2.setNext(n3);n3.setNext(n4);n4.setNext(n5);return root;}}

?总之,队列实现了数组和链表不能改变长度的弊端。

关于数组、链表和队列这些方面的知识还有很多很多,比如双向链表、泛型队列、增删查改各种实现等等,以后有机会用的时候还会总结的。

谢谢关注!

热点排行