資料結構之棧

2022-07-20 15:54:12 字數 882 閱讀 2901

一、棧的定義

所謂棧的本質也是乙個線性表,只不過他具有進出,並且進出滿足先進後出的原則。

一種定義方式為陣列定義方式,這種方式就要求我們開闢乙個特定大小的陣列,就不能節省空間。

如下所示:

#define maxsize < 儲存資料元素的最大個數》

typedef structstack

typedef struct nodelinkstack;

linkstack *top;

注意:此處的元素為棧頂指標。

二、鏈式棧表的編寫

我們僅以鏈式棧表來編寫棧表程式

(1)堆疊初始化

所謂堆疊初始化就是建立乙個空的棧表

需要申請一塊空間記憶體,並且這個棧指向空

linkstack *creatstack(void)

(2)判斷棧是否為空

這個函式只需要看棧頂指向的元素是否為空即可

int isempty(linkstack *s)

(3)入棧

就是將元素壓棧進入表中。

void push(elementtype item,linkstack *s)

(4)出棧

取出元素,取元素是從棧頂取元素。

elementtype pop(linkstack *s)

else

return data;

}

三、應用

棧的應用一般用在函式遞迴中,棧的使用可以節省空間。

(後續新增)

資料結構之棧結構

棧結構是一種filo first in last out 的批量資料儲存結構。其特點是先進後出,後來者居上 棧的基本屬性 棧記憶體 棧頂標記 棧的當前元素個數 萬金油屬性 size 棧的基本操作 萬金油的的操作 根據實現的不同將棧結構分為兩種 1.鏈式棧 2.陣列 利用有表頭鍊錶的頭插法來完成棧的功...

資料結構之棧

4.8.2 四則運算表示式求值 程式如下所示 include include include 定義結點型別 typedef struct node node,pnode 定義棧的抽象資料型別 typedef struct stack stack,pstack 函式宣告 對棧進行初始化的函式 void...

資料結構之棧

資料結構之棧 本文討論棧的陣列實現。棧需要有如下幾個屬性 棧的容量 capacity 棧頂指標 儲存棧元素的陣列 根據這幾個屬性可以定義乙個棧結構體 struct stackrecord 然後定義棧的操作,一般可以包含如下幾個 棧的建立 stack createstack int size 棧的銷毀...