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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

栈与队列理解

發布時間:2025/3/20 编程问答 10 豆豆
生活随笔 收集整理的這篇文章主要介紹了 栈与队列理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

🔎前言
本期文章講會從之前學過的順序表,鏈表基礎上,進行棧與隊列的講述,由于博主也是學習狀態,如有不對的地方,希望多多指正!相互學習,共同進步哦!

📘 博客主頁:to Keep博客主頁
🙆歡迎關注,👍點贊,📝留言評論
?首發時間:2021年12月26日
📨 博主碼云地址:博主碼云地址
📕參考書籍:java核心技術 卷1
📢編程練習:牛客網+力扣網

文章目錄

  • 🙋 棧的概念
  • 👇 棧的實現(順序表實現)
    • 👉判斷棧是否為空
    • 👉 返回棧的長度
    • ?進棧
    • ?出棧
    • ??獲取棧頂元素
  • 🙋隊列的概念
  • 👇 隊列的實現(鏈表實現)
    • ?入隊列
    • ?出隊列
    • ??獲取隊列頭元素
  • 🌱 總結

🙋 棧的概念

棧其實本質就是一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行數據插入和刪除操作的一端稱為棧頂,另一端稱為棧底。棧中的元素要遵循后進先出,先進后出的原則。

👇 棧的實現(順序表實現)

👉判斷棧是否為空

public class Mystack {private int[] array = new int[50];private int size = 0;//判斷是否為空public boolean isEmpty(){return size==0;} }

👉 返回棧的長度

public class Mystack {private int[] array = new int[50];private int size = 0;public int size(){return size;} }

?進棧

public class Mystack {private int[] array = new int[50];private int size = 0;//進棧public void push(int val){array[size]=val;size++;} }

?出棧

public class Mystack {private int[] array = new int[50];private int size = 0;//出棧public int pop(){if (!isEmpty()){int temp = array[size];size--;return temp; }else {throw new RuntimeException("空棧");}} }

??獲取棧頂元素

public class Mystack {private int[] array = new int[50];private int size = 0;//獲取棧頂元素public int peek(){if (!isEmpty()){return array[size-1];}else{throw new RuntimeException("空棧");}} }

🙋隊列的概念

隊列:只允許在一端進行插入數據操作,在另一端進行刪除數據操作的特殊線性表,隊列具有先進先出.
入隊列:進行插入操作的一端稱為隊尾(Tail/Rear)
出隊列:進行刪除操作的一端稱為隊頭

👇 隊列的實現(鏈表實現)

隊列中的判斷是否為空與獲取隊列的長度是與棧一樣的,這里就不在進行重復的書寫

?入隊列

class node{public node next;public int val;public node(int val){this.val=val;} } public class Myqueue {public node head;private node tail;private int size;//判斷是否為空public boolean isEmpty(){return size == 0;}//獲取隊列的長度public int size(){return size;}//入隊列public void enquene(int val){node cur = new node(val);if (head==null){head=cur;}else{tail.next=cur;}tail=cur;size++;} }

?出隊列

//出隊列public int dequene(){if (size==0){throw new RuntimeException("空隊列");}node oldhead = head;head=head.next;if(head==null){tail=null;//如果頭結點為空,那么尾節點也是不能有任何指向的}size--;return oldhead.val;}

??獲取隊列頭元素

//獲取隊列頭元素public int peek(){if (size==0){throw new RuntimeException("空隊列");}return head.val;}

🌱 總結

無論是棧還是隊列,其實主要就是要掌握它們底層的數據結構,鏈表以及順序表才是關鍵。另外這些知識基本的原理,下一步預計就是得去刷些棧與隊列的習題進行鞏固。

總結

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

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