日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

顺序队列,循环队列,链队列

發布時間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 顺序队列,循环队列,链队列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

隊列

  • 先看隊列接口和結點類
  • 1. 順序隊列
  • 2. 循環隊列
  • 3. 鏈隊列

先看隊列接口和結點類

package com.lovely.queue;/** * 2020年4月26日下午2:42:44* * @author echo lovely**/ public interface IQueue {public void clear(); // 將隊列置空public boolean isEmpty(); // 判斷隊列是否為空public int length(); // 返回隊列的數據元素個數public Object peek(); // 返回隊首元素 public void offer(Object x) throws Exception; // x插入隊列,隊尾入隊public Object poll(); // 返回隊首元素,并刪除 隊首出隊public void display(); // 輸出隊列中所有數據元素}package com.lovely.linearList;/** * 2020年4月1日下午8:25:10* * @author echo lovely** @category 節點類 用于存數據 和 后繼節點*/public class Node {public Object data; // 存放節點數據值public Node next; // 存放后繼節點public Node() {this(null, null);}// 只有節點值的構造函數public Node(Object data) {this(data, null);}// 帶有節點值和后繼節點的構造函數public Node(Object data, Node next) {this.data = data;this.next = next;} }

1. 順序隊列

package com.lovely.queue;/*** @author echo lovely** 2020年4月26日下午3:03:05* * 隊列的順序儲存結構* 隊首出隊(刪除),隊尾入隊(插入)。*/ public class SeqQueue implements IQueue {private Object[] queueElem; // 隊列的儲存空間private int maxSize; // 隊列的最大儲存單元個數private int front; // 指向隊首元素private int rear; // 指向隊尾元素的下一個元素 // 構造最大儲存單元為maxSize的空隊列public SeqQueue(int maxSize) {this.maxSize = maxSize;front = rear = 0;queueElem = new Object[maxSize];}@Overridepublic void clear() {// 隊列置空front = rear = 0; }@Overridepublic boolean isEmpty() {// 隊列是否為空 return front == rear;}@Overridepublic int length() {// 隊列長度return rear - front;}@Overridepublic Object peek() {// 返回隊首元素if (isEmpty())return null;return queueElem[front];}@Overridepublic void offer(Object x) throws Exception {// 隊尾入隊if (rear == maxSize)throw new Exception("隊列已滿");queueElem[rear] = x;rear ++; // 指向隊尾的下一個元素}@Overridepublic Object poll() {// 出隊 只不過是不顯示罷了if (isEmpty())return null;front ++; // 指向原來隊首元素的下一個元素return queueElem[front];}@Overridepublic void display() {if (!isEmpty()) {for (int i = front; i < rear; i++) {System.out.print(queueElem[i] + "\t");}} elseSystem.out.println("隊列為空!");}}
  • 測試
package com.lovely.queue;public class TestSeqQueue {public static void main(String[] args) {// 順序隊列SeqQueue sq = new SeqQueue(6);try {// 入隊sq.offer(1);sq.offer(2);sq.offer(3);sq.offer(4);} catch (Exception e) {e.printStackTrace();}System.out.println("隊列長度 " + sq.length());Object obj = sq.poll();System.out.println(obj + "出隊后,長度 " + sq.length());System.out.println("隊首元素:" + sq.peek());sq.display();/* 這里有問題,多次入隊出隊操作,造成有存儲空間卻不能進行入隊操作的"假溢出"現象try {sq.offer(88);sq.offer(88);sq.poll();sq.poll();sq.offer(88);sq.poll();} catch (Exception e) {e.printStackTrace();}System.out.println("\n長度 " + sq.length());sq.display();*//* 隊列長度 4 2出隊后,長度 3 隊首元素:2 2 3 4 */}}

2. 循環隊列

package com.lovely.queue;/*** * @author echo lovely** 2020年5月19日下午8:53:03* * 循環順序隊列* 順序隊列的多次入隊和出隊 會造成有儲存空間 卻不能進行入隊操作的假溢出現象。*/ public class CircleSeqQueue {private Object[] queueElem; // 隊列的儲存空間private int front; // 指向隊首元素private int rear; // 指向隊尾元素的下一個儲存元素private int maxSize; // 隊列的最大儲存單元個數// 構造最大儲存單位個數為maxSize的空隊列public CircleSeqQueue(int maxSize) {front = rear = 0;queueElem = new Object[maxSize];this.maxSize = maxSize;}// 將隊列置空public void clear() {front = rear = 0;}// 判斷隊列是否為空public boolean isEmpty() {return front == rear;}// 隊列的長度public int length() {return (rear - front + maxSize) % maxSize; }// 讀取隊首元素public Object peek() {if (isEmpty())return null;return queueElem[front];}// 入隊public void offer(Object x) throws Exception {if ((rear + 1) % maxSize == front) throw new Exception("隊列已滿");queueElem[rear] = x;rear = (rear + 1) % maxSize;}// 出隊public Object poll() {if (rear == front)return null;Object p = queueElem[front];front = (front + 1) % maxSize;return p;}// 遍歷隊列public void display() {if (!isEmpty()) {for (int i = 0; i < rear; i = (i + 1) % maxSize) {System.out.print(queueElem[i] + " ");}} elseSystem.out.println("此隊列為空!");} }
  • 測試
package com.lovely.queue;public class TestCircleSeqQueue {public static void main(String[] args) {// 構造長度為10的隊列CircleSeqQueue csq = new CircleSeqQueue(10);try {csq.offer(1);csq.offer(2);csq.offer(3);csq.offer(4);csq.offer(5);csq.offer(6);} catch (Exception e) {e.printStackTrace();}System.out.println("隊首元素:" + csq.peek());System.out.println("出隊:" + csq.poll());csq.display();}}/** 隊首元素:1 出隊:1 2 3 4 5 6 */

3. 鏈隊列

package com.lovely.queue;import com.lovely.linearList.Node;/*** * @author echo lovely* 2020年6月7日下午7:20:02* * 鏈隊列 * 使用單鏈表實現* 實現入隊隊尾 出隊隊首, 沒有中間的插入或者刪除* * 無需頭節點 , front指向頭節點 rear指向隊尾結點便可*/ public class LinkQueue implements IQueue {private Node front; // 隊首指針private Node rear; // 隊尾指針// 構造空隊列public LinkQueue() {front = rear = null;}public void clear() {front = rear = null;}public boolean isEmpty() {// 隊首是否為空return front == null;}@Overridepublic int length() {Node p = front;int length = 0;while (p != null) {p = p.next;length ++;}return length;}// 返回隊首元素值public Object peek() {if (isEmpty()) return null;return front.data;}@Overridepublic void offer(Object x) throws Exception {// 入隊Node s = new Node(x);if (!isEmpty()) { // 隊列非空rear.next = s;rear = s;} else front = rear = s;}// 出隊public Object poll() {if (front == null)return null;Node p = front;front = front.next;if (p == rear) {rear = null; // 刪除結點為隊尾結點時需要修改rear}return p.data;}public void display() {if (!isEmpty()) {for(Node p = front;p != null;p = p.next) {System.out.print(p.data + "\t");}System.out.println();} else {System.out.println("此隊列為空");}}}
  • 測試
package com.lovely.queue;public class TestLinkQueue {public static void main(String[] args) {// 鏈隊列的增刪改查LinkQueue lq = new LinkQueue();try {lq.offer(2);lq.offer(3);lq.offer(5);lq.offer(7);lq.offer(11);} catch (Exception e) {e.printStackTrace();}System.out.println("入隊的隊列:");lq.display();System.out.println("隊首元素:" + lq.peek());System.out.println("隊首出隊:" + lq.poll());lq.display();System.out.println("隊列的長度為:" + lq.length());}}/** 入隊的隊列: 2 3 5 7 11 隊首元素:2 隊首出隊:2 3 5 7 11 隊列的長度為:4*/

總結

以上是生活随笔為你收集整理的顺序队列,循环队列,链队列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产剧情av麻豆香蕉精品 | 中文字幕2018 | 美女xx00| 牛夜精品久久久久久久99黑人 | 波多野结衣二区 | 捆绑调教sm束缚网站 | 91精品国产自产精品男人的天堂 | 中文免费在线观看 | gai免费观看网站外网 | 小sao货水好多真紧h无码视频 | 欧美日韩在线视频一区二区三区 | 亚洲自拍偷拍第一页 | 性色视频 | 亚洲春色另类 | 久久久久久久久久久久久女过产乱 | 人妻精品无码一区二区 | 欧美爱爱小视频 | 精品在线免费视频 | 在线看片你懂得 | 亲切的金子餐桌片段的金子 | 欧美熟妇乱码在线一区 | 最新地址在线观看 | 色综合图片 | 人与动物黄色片 | 国产高清黄色 | 先锋影音av资源网 | 你懂的网站在线观看 | 国产裸体网站 | 俺也来俺也去俺也射 | 天天操狠狠操 | 日日夜夜拍 | 美国少妇性做爰 | 天天在线免费视频 | 欧洲国产精品 | 国产精品嫩草av | 制服丝袜亚洲 | 免费拍拍拍网站 | 国产精品偷乱一区二区三区 | 78日本xxxxxxxxx59| 成人性做爰片免费视频 | 五月丁香啪啪 | xx在线视频 | 内射一区二区 | 亚洲精品一区二区三区在线 | 久久男人av | 欧美亚洲91 | 亚洲亚裔videos黑人hd | 激情视频一区二区三区 | 国产精品免费久久久 | caoprom在线视频 | 亚洲色图14p | 在线观看黄色片 | 五月婷婷激情在线 | 看黄色一级| 成人91| 国产综合在线播放 | 欧美亚洲视频一区 | 小黄网站在线观看 | 精品不卡一区 | 欧美丰满少妇 | 免费观看国产精品视频 | 成人在线观看你懂的 | 国产欧美精品一区二区三区 | 99国产精品国产免费观看 | www一起操 | 久久中文字幕电影 | 日韩av电影手机在线观看 | 秋霞自拍 | 国产sm在线观看 | 久久视频热 | 亚洲成年网 | 91入囗| 午夜在线观看视频18 | 国产色播av在线 | 久久亚洲精品中文字幕 | 三上悠亚亚洲一区 | 网红日批视频 | 毛片视频网站在线观看 | 亚洲自拍偷拍网站 | 18禁超污无遮挡无码免费游戏 | 一本无码aⅴ久久久国产 | 久草视频在线播放 | 国产成人福利 | 精品人妻无码一区二区三区换脸 | 精品国产一区在线观看 | 99这里有精品视频 | 激情免费网站 | 国产精品xxx在线观看 | 色天天综合 | 国产乱淫视频 | 天天视频亚洲 | 黄色1级大片 | 日韩一区二区三区三四区视频在线观看 | 樱空桃在线 | 中文字幕一区二区三区精华液 | 成人午夜精品福利免费 | 邻家有女4完整版电影观看 欧美偷拍另类 | 中国免费一级片 | 久久久久久a |