Java基礎(chǔ)學(xué)習(xí):Java實(shí)現(xiàn)隊(duì)列

Java基礎(chǔ)學(xué)習(xí):Java實(shí)現(xiàn)隊(duì)列

長(zhǎng)沙牛耳教育      2022-03-31 16:40:01     34

Java基礎(chǔ)學(xué)習(xí):Java實(shí)現(xiàn)隊(duì)列,  棧:這是一個(gè)先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu),生活中類似的瀏覽器的返回上一頁(yè)就可以利用此結(jié)構(gòu)實(shí)現(xiàn),代碼如下:  publicclassStackT{

課程價(jià)格 請(qǐng)咨詢

上課時(shí)段: 授課校區(qū):

詳細(xì)介紹



  棧:這是一個(gè)先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu),生活中類似的瀏覽器的返回上一頁(yè)就可以利用此結(jié)構(gòu)實(shí)現(xiàn),代碼如下:

  publicclassStack<T>{  privateObject[]data;//存儲(chǔ)數(shù)據(jù)  privateinttop;//表示棧頂元素  publicStack(){  data=newObject[100];//為了說(shuō)明原理隨意指定  top=-1;  }  publicsynchronizedvoidput(Tt){//壓?! ata[data.length]=t;  top++;  }  publicsynchronizedTpop(){//出?! f(top<0){  returnnull;  }  Tt=(T)data[top];  top--;  returnt;  }  }

  這只是我自己的Java實(shí)現(xiàn)只說(shuō)明原理,但實(shí)際在java中是利用vector來(lái)存儲(chǔ)數(shù)據(jù)的,我們知道vector其實(shí)是一個(gè)線程安全的ArrayList,而ArrayList的底層也是一個(gè)數(shù)組,所以原理上大同小異


  隊(duì)列:隊(duì)列其實(shí)就是我們生活中的排隊(duì)現(xiàn)象,先進(jìn)入的先出,后進(jìn)入的后出,代碼實(shí)現(xiàn)如下:

  publicclassQueue<T>{  privateObject[]data;//存儲(chǔ)數(shù)據(jù)  privateinthead;//頭  privateinttail;//尾  publicQueue(){  data=newObject[100];//為了說(shuō)明原理隨意指定  head=1;  tail=1;  }  publicvoidput(Tt){  data[tail]=t;  tail++;  }  publicTget(){  Tt=(T)data[head];  head++;  returnt;  }  }

  如上所示,也只是說(shuō)明原理,其實(shí)在javajdk中也有許多不同的對(duì)列,并且對(duì)列可以由數(shù)組實(shí)現(xiàn),也可以由鏈表實(shí)現(xiàn),下面介紹鏈表


  鏈表是一個(gè)類似于現(xiàn)實(shí)中串項(xiàng)鏈的數(shù)據(jù)結(jié)構(gòu),前一個(gè)數(shù)據(jù)指向后一個(gè)數(shù)據(jù),當(dāng)然也可以后一個(gè)數(shù)據(jù)指向前一個(gè)數(shù)據(jù),這就是雙向鏈表,這里不做討論

  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實(shí)現(xiàn)的簡(jiǎn)單鏈表,還有雙向鏈表是一個(gè)元素指向前一個(gè)元素和后一個(gè)元素,原理大概相同,這里可以看書鏈表中取固定位置的數(shù)據(jù)是非常麻煩的,必須從第一個(gè)開始依次查找,這也就是linklist不用for(inti=0;i++;i<size())遍歷的原因,因?yàn)閘inklist的底層就是通過(guò)鏈表來(lái)實(shí)現(xiàn)的



    以上就是長(zhǎng)沙牛耳教育Java培訓(xùn)機(jī)構(gòu)小編介紹的“Java基礎(chǔ)學(xué)習(xí):Java實(shí)現(xiàn)隊(duì)列”的內(nèi)容,希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。


Java基礎(chǔ)學(xué)習(xí)

培訓(xùn)啦提醒您:交易時(shí)請(qǐng)核實(shí)對(duì)方資質(zhì),對(duì)于過(guò)大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。