数组跟链表实现队列

数组和链表实现队列

在用数组实现队列之前,让我们浅析一下数组的相关定义和性质。
当我们定义一个数组时,可以采用如下方法:
数组类型 [] 数组名 = new  数组类型 [长度]
数组类型 [] 数组名 = { ......值......}
数组类型 [] 数组名 = new  数组类型 []{......值......}
我们发现数组的一个特性大小是固定的,不能根据数据总数的变化而变化。但是队列的长度是可以改变的。那我们该怎么用数组去实现队列呢? 数组跟链表实现队列
首先我们还是要从数组本身性质出发,我们发现数组名中存的是地址。^_^有没有想到一点什么? 数组跟链表实现队列
既然存的是地址,那我就可以改变地址的内容,使数组名中存放另一个更大的数组的首地址。核心代码如下: 

 //创建一个新的更大的内存
	length=size+1;
	Student [] temp= new Student[length];
	//把老数组里面的所有元素赋值给新数组
	for(int i=0;i<size;i++)
	{
		temp[i]=queue[i];
	}
	//再让queue指向新数组temp
	queue=temp;
	//再把添加的元素加到新的队列里面去
	queue[size]=stu;

 这样就数组队列就实现了,现在我们可以任性的往里面添加数据,再也不怕溢出了~数组跟链表实现队列

/*************************************************

下面让我们继续用链表来实现队列,链表本身就是一个长度不固定的数据结构,所以我们不用再担心溢出,但是.............

我们同样也来浅析一下链表的属性吧,所谓知己知彼,百战不殆。

链表与数组不同,链表是一块离散的内存,是由一个一个Node节点组成的,它有头结点head,尾节点rear;链表的节点有两个部分,一个是数据域,不用再解释,就是装数据的用的;另一个是引用域,(数组跟链表实现队列因为我最初接触的是C,所以我就把这这个引用于想成一个指针域,)指向它的next节点,这样就不会丢失后面的数据啦~(Java里面没有定义指针数组跟链表实现队列,刚开始理解起来还真有点别扭,请允许我小小吐槽一下哈)。下面请看构造Node节点的核心代码:

public class List_Node {
	private Object data;//数据
	private List_Node   next;//引用域
	//构造函数
	public List_Node(Object data)
	{
		this.data=data;
	}
	//设置该节点的数据域中的数据
	public void setdata(Object data)
	{
		this.data=data;		
	}
	//得到该节点的数据域中存放的数据
	public Object getdata()
	{
		return data;
	}
	//设置它的下一个节点
	public void setNext(List_Node next)
	{
		this.next=next;
	}
	//得到它的下一个节点
	public List_Node getNext()
	{
		return next;
	}	
}

 之后定义链表和定义数组就差不多了,但是记得链表有一个头结点和一个尾节点哦~数组跟链表实现队列核心代码如下:

//定义链表
public class List {

		private List_Node root;// 声明一个根节点
		private List_Node tail;// 声明一个尾节点
                  //增删查改函数依此如下
		public void add(List_Node newnode)
                public Object removeindex(int index)
                public Object getData(int index)
                public Object changedata(int index ,Object data)
 }

 数组跟链表实现队列终于写完了~~开森~