更新時間:2020-03-24 13:37:49 來源:動力節(jié)點 瀏覽3010次

棧:這是一個先進后出的數據結構,生活中類似的瀏覽器的返回上一頁就可以利用此結構實現,代碼如下:
publicclassStack<T>{
privateObject[]data;//存儲數據
privateinttop;//表示棧頂元素
publicStack(){
data=newObject[100];//為了說明原理隨意指定
top=-1;
}
publicsynchronizedvoidput(Tt){//壓棧
data[data.length]=t;
top++;
}
publicsynchronizedTpop(){//出棧
if(top<0){
returnnull;
}
Tt=(T)data[top];
top--;
returnt;
}
}這只是我自己的Java實現只說明原理,但實際在java中是利用vector來存儲數據的,我們知道vector其實是一個線程安全的ArrayList,而ArrayList的底層也是一個數組,所以原理上大同小異
隊列:隊列其實就是我們生活中的排隊現象,先進入的先出,后進入的后出,代碼實現如下:
publicclassQueue<T>{
privateObject[]data;//存儲數據
privateinthead;//頭
privateinttail;//尾
publicQueue(){
data=newObject[100];//為了說明原理隨意指定
head=1;
tail=1;
}
publicvoidput(Tt){
data[tail]=t;
tail++;
}
publicTget(){
Tt=(T)data[head];
head++;
returnt;
}
}如上所示,也只是說明原理,其實在javajdk中也有許多不同的對列,并且對列可以由數組實現,也可以由鏈表實現,下面介紹鏈表
鏈表是一個類似于現實中串項鏈的數據結構,前一個數據指向后一個數據,當然也可以后一個數據指向前一個數據,這就是雙向鏈表,這里不做討論
publicclassMyNode<T>{
privateNode<T>headNode;
publicMyNode(Tt){
headNode=newNode<>(t,null);
}
publicMyNode(){
}
privatestaticclassNode<E>{
Objecte;
Node<E>next;
Node(Eelement,Node<E>next){
this.e=element;
this.next=next;
}
}
publicvoidput(Tt){
if(headNode==null){
headNode=newNode<>(t,null);
}else{
headNode=newNode<>(t,headNode);
}
}
publicTget(intindex){
Nodenode=headNode;
for(inti=2;i<index;i++){
node=node.next;
}
Tt=(T)node.e;
returnt;
}
}以上就是用Java實現的簡單鏈表,還有雙向鏈表是一個元素指向前一個元素和后一個元素,原理大概相同,這里可以看書鏈表中取固定位置的數據是非常麻煩的,必須從第一個開始依次查找,這也就是linklist不用for(inti=0;i++;i<size())遍歷的原因,因為linklist的底層就是通過鏈表來實現的

以上就是動力節(jié)點Java培訓機構小編介紹的“Java基礎學習:Java實現隊列”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。