棧與隊列

 

1、棧的定義數組

  棧的定義:棧是限定僅在表尾進行插入和刪除的操做的線性表。函數

  容許插入和刪除的一段稱爲棧頂,另外一端稱爲棧底,不含任何數據元素的棧稱爲空棧。棧又稱爲後進先出的線性表,簡稱LIFO結構。設計

  棧元素具備線性關係,即前驅後繼關係,只不過他是一種特殊的線性表。他的特殊之處就在於限制了這個線性表的插入和刪除位置,它始終只在棧頂進行。這也就使得:棧底是固定的,最早進棧的只能在棧底。3d

  棧的插入操做,叫作進棧,也稱壓棧、入棧。blog

  棧的刪除操做,叫作出棧,也有的叫作彈棧。遞歸

2、棧的抽象數據類型隊列

  由於棧也是一個線性表,因此,線性表的順序存儲和鏈式存儲對於棧也一樣適用。內存

3、棧的順序存儲結構及實現程序設計

  一、棧的順序存儲結構循環

  

  二、進棧操做

  

  三、出棧操做

  

  四、棧的鏈式存儲結構

    鏈棧的操做絕大多數都和單鏈表相似,只是在插入和刪除上特殊一些。

  五、棧的做用

    棧的引入簡化了程序設計的問題,劃分了不一樣關注層次,使得思考範圍縮小,更加聚焦於咱們要解決的問題核心。反之,像數組等,由於要分散精力去考慮數組的下標增減等問題,反而掩蓋了問題的本質。

  六、遞歸

    棧有一個很重要的做用是在程序設計語言中實現了遞歸。好比:斐波那契數列

    遞歸:把一個直接調用本身或經過調用語句間接調用本身的函數,稱做遞歸函數。每一個遞歸定義必須至少有一個條件,知足時遞歸再也不進行,即再也不引用自身而是返回值退出。

    遞歸與迭代區別:迭代使用的是循環結構,遞歸使用的是選擇結構。遞歸能使程序的結構更清晰、更簡潔、更容易讓人理解,從而減小讀懂代碼的時間。可是大量的遞歸調用會創建函數的副本,會消耗大量的時間和內存。迭代則不須要反覆調用函數和佔用額外的內存。

4、隊列的定義

  隊列是隻容許在一端進行插入操做,而在另外一端進行刪除操做的線性表。隊列是一種先進先出的線性表,簡稱FIFO。容許插入的一端稱爲隊尾,容許刪除的一端稱爲對頭。

5、隊列的鏈式存儲結構及實現

  

 

 6、總結

  棧和隊列大部分操做和單鏈表相似,再也不作詳細介紹。

相關文章
相關標籤/搜索