<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 隊列(JAVA實現(xiàn))“>數(shù)據(jù)結(jié)構(gòu)->隊列(JAVA實現(xiàn))

          隊列(JAVA實現(xiàn))“>數(shù)據(jù)結(jié)構(gòu)->隊列(JAVA實現(xiàn))

          作者: 時間:2016-12-01 來源:網(wǎng)絡(luò) 收藏
          隊列又是一種比較特殊的線性表,和棧一樣在線性表的基礎(chǔ)上進行了一些限制操作。就是隊列了。顧名思義,隊列就是咱們排隊買火車票一樣,排在最前面的先買到,排到后面的后買到。先進先出、后進后出。

          隊列的操作
          隊列的操作一般包括:進隊列、出隊列,訪問隊列頭元素、刪除隊列頭元素、判斷隊列是否為空、獲得隊列大小這些核心操作。
          隊列的順序?qū)崿F(xiàn)
          和棧結(jié)構(gòu)一樣隊列也有兩種實現(xiàn)方式相對于順序?qū)崿F(xiàn)方式,鏈式實現(xiàn)相對比較簡單,只需要利用Node結(jié)構(gòu),記錄下隊列的頭Node和尾巴Node,在記錄下元素個數(shù)就可以了。實現(xiàn)代碼如下:
          package dateStructer.queue;

          本文引用地址:http://www.ex-cimer.com/article/201612/324247.htm

          public class MyQueue implements Queue {

          /**
          * 雙向鏈表結(jié)構(gòu)
          */
          public class LinkNode {

          // 真正的數(shù)據(jù)域
          private E date;

          // 記錄上一個節(jié)點
          private LinkNode prevLinkNode;

          // 記錄下一個節(jié)點
          private LinkNode nextLinkNode;

          public LinkNode() {

          }

          public LinkNode(E date, LinkNode prevLinkNode, LinkNode nextLinkNode) {
          this.date = date;
          this.prevLinkNode = prevLinkNode;
          this.nextLinkNode = nextLinkNode;
          }
          }

          // 結(jié)點個數(shù)
          private int nodeSize;

          // 頭結(jié)點
          private LinkNode headNode;

          // 尾巴節(jié)點
          private LinkNode tailNode;

          public MyQueue(){
          headNode = null;
          tailNode = null;
          }

          /**
          * 添加元素
          */
          @Override
          public boolean add(E element) {
          if (nodeSize == 0) {
          headNode = new LinkNode(element, null, tailNode);
          }else {

          if (tailNode == null) {
          tailNode = new LinkNode(element, headNode, null);
          headNode.nextLinkNode = tailNode;
          nodeSize++;
          return true;
          }

          LinkNode linkNode = tailNode;
          tailNode = new LinkNode(element, linkNode, null);
          linkNode.nextLinkNode = tailNode;

          }
          nodeSize++;
          return true;
          }

          /**
          * 訪問隊列頭元素
          */
          @Override
          public E element() {
          return headNode.date;
          }

          /**
          * 返回頭元素,不刪除頭元素
          */
          @Override
          public E peek() {
          return headNode.date;
          }

          /**
          * 返回頭元素,刪除頭元素
          */
          @Override
          public E poll() {

          LinkNode headNodeTemp = headNode;
          E date = headNodeTemp.date;
          if(headNode.nextLinkNode == null){
          headNode.date = null;
          headNode = null;
          nodeSize--;
          return date;
          }else{
          headNode = headNode.nextLinkNode;
          if(headNode == tailNode){
          tailNode = null;
          }
          }

          nodeSize--;

          return headNodeTemp.date;
          }

          /**
          * 清除所有元素
          */
          @Override
          public void clear() {

          LinkNode linkNodeNowTemp = headNode;

          for (int i = 0; i < nodeSize; i++) {

          if (linkNodeNowTemp != tailNode && linkNodeNowTemp != headNode) {
          linkNodeNowTemp = linkNodeNowTemp.nextLinkNode;
          linkNodeNowTemp.prevLinkNode.nextLinkNode = null;
          linkNodeNowTemp.prevLinkNode.prevLinkNode = null;
          linkNodeNowTemp.prevLinkNode.date = null;
          linkNodeNowTemp.prevLinkNode = null;
          } else if (linkNodeNowTemp == tailNode) {
          linkNodeNowTemp.prevLinkNode = null;
          } else if (linkNodeNowTemp == headNode) {
          linkNodeNowTemp.nextLinkNode = null;
          }

          }
          headNode = null;
          tailNode = null;
          nodeSize = 0;

          }


          上一頁 1 2 下一頁

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();