首頁 > 軟體

C語言範例程式碼講解棧與佇列

2022-05-25 14:00:06

上文詳細的講解了順序表與連結串列的實現,相信大家在順序表與連結串列的指基礎上,很容易就能學會站和佇列,廢話不多說,我們馬上開始!

棧的定義

棧是一種線性表,但限定這種線性表只能在某一端進行插入和刪除操作

假設棧 【s = (a1,a2,……,an) 】,a1為棧底元素,an為棧頂元素。由於棧只能在棧頂進行插入和刪除操作,所以進棧次序依次為【a1,a2,……,an】,出棧次序為【an,……,a2,a1】

由此可見:棧的操作特性可以明顯地概括為後進先出

棧類似於線性表,它也有兩種對應的儲存方式分別為順序棧和鏈棧。

順序棧

順序棧的定義

Q:什麼是順序棧?

A:採用順序儲存的棧成為順序棧。它利用一組地址連續的儲存單位存放自棧底到棧頂的資料元素,同時附設一個指標(top)來指示當前棧頂的位置。

棧的順序儲存型別可描述為

#define MaxSize 100				//定義棧中元素的最大個數
typedef struct
{
	SElemtype *base;			//棧底指標
	SElemtype *top;				//棧頂指標 
	int stacksize				//棧可用的最大容量 
}SqStack; 

順序棧的初始化

Q:什麼是順序棧的初始化?

A:順序棧的初始化操作就是為順序棧動態分配一個最大容量為 MaxSize 的陣列空間。

實現原理

  1. 為順序棧動態分配一個最大容量為MAXSIZE的陣列
  2. 棧頂指標top初始為base,表示棧為空
  3. stacksize置為棧的最大容量MaxSize


IT145.com E-mail:sddin#qq.com