行列总结
队列总结
先学的是数组,数组在五子棋的作用在五子棋中体现的很微妙,但数组有个很大的缺点,数组一旦定义,大小就是固定的,而用户的需要的大小是未知的,于是就出现了队列。队列的的实现大体有两种方法,一个是用数组实现,先定义一个数组大小为零的数组,然后没加一个元素,重新定义一个新数组,长度比原长度加一;另一种实现方式是链表队列,有单链表实现的队列,也有双链表实现的队列,大体思路都差不多,还可在其中定义各种需要的方法,如插入方法,删除方法等等。。。
package LinkList20130717;
package LinkList20130717; import LinkBook20130717.LinkNode; import LinkBook20130717.Student; public class LinkList { private static LinkNode root; private LinkNode last; private int count=0; //定义加入节点的方法 public void add(Object obj){ LinkNode temp=new LinkNode(obj); // temp.setObj(obj); // root=new LinkNode(); if(null==root){ root=temp; last=root; }else{ last.setNext(temp); last=temp; } count++; } public static void main(String[] args){ LinkList link=new LinkList(); LinkNode n1=new LinkNode("一节点"); LinkNode n2=new LinkNode("二节点"); LinkNode n3=new LinkNode("三节点"); LinkNode n4=new LinkNode("四节点"); link.add(n2); link.add(n1); link.add(n4); link.add(n3); link.printLinkList(root); } //队列的大小方法 public int size(){ return count; } //打印方法 public void printLinkList(LinkNode root){ if(null!=root){ Object data=root.getObj(); System.out.println(data); LinkNode temp=root.getNext(); printLinkList(temp);//递归 } } } package LinkBook20130717; 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 String toString(){ return (String)this.getObj(); } }
package LinkList20130717; import LinkBook20130717.Student; //数组变队列 public class ArrayList01 { private static Student[] stu=new Student[0]; //增加元素的方法 public void add(Student laststu){ //1.新建数组,长度是原来数组的长度 Student [] newstu=new Student[stu.length+1]; //2.将增加的元素加到数组的最后一位 newstu[stu.length]=laststu; //3.将原数组以前的冬冬放到新书组中 for(int i=0;i<stu.length;i++){ newstu[i]=stu[i]; } stu=newstu; } //取得对应位置元素的方法 public Student get(int index){ Student stuIndex=stu[index]; return stuIndex; } //队列的长度 public int size(){ return stu.length; } //插入元素的方法 public void insert(Student stu01,int index ){ //1.新建数组,长度是原来数组的长度 Student [] newstu=new Student[stu.length+1]; //3.将原数组以前的冬冬放到新书组中 for(int i=0;i<index;i++){ newstu[i]=stu[i]; } //2.将增加的元素加到数组的指定位置 newstu[index]=stu01; //将索引值以后的元素放入数组中 for(int i=index;i<stu.length;i++){ newstu[i+1]=stu[i]; } stu=newstu; } public Student remove(int index){ Student[] destu=new Student[stu.length-1]; for(int i=0;i<index;i++){ destu[i]= stu[i]; } for(int i=index+1;i<stu.length;i++){ destu[i-1]=stu[i]; } stu=destu;//放后为何不行 return stu[index]; } //打印学生信息 // public void print(){ // for(int i=0;i<this.size();i++){ // System.out.println("学生姓名"+stu[i].name+"学分"+stu[i].getScro()); // } // } public static void main(String args[]){ Student stua=new Student("a",1); Student stub=new Student("b",2); Student stuc=new Student("c",3); Student stud=new Student("d",4); Student stue=new Student("e",5); ArrayList01 array=new ArrayList01(); array.add(stua); array.add(stub); array.add(stuc); array.add(stud); array.insert(stue, 3); array.remove(2); for(int i=0;i<array.size();i++){ System.out.println("学生姓名"+stu[i].getName()+"学分"+stu[i].getScro()); } } }