資料結構 順序棧的實現(動態版)

2021-09-14 07:23:26 字數 1404 閱讀 4513

本部落格我們利用動態順序表實現棧。與靜態順序表的區別就是靈活性更高。

我們動態順序棧存放的是自棧底到棧頂的資料元素,通過雙指標控制。

通常的習慣做法是以top = 0表示空棧,鑑於c語言中陣列下標約定從0開始,則當以c作為描述語言時,如此設定會帶來很大不便。另一方面,由於棧在使用過程中所需**大空間的大小很難估計,因此在初始化設空棧時不應該限定棧的最大容量,所以就有了此篇動態版順序表的實現,採用的做法是:先為棧分配乙個基本容量,然後再應用過程中,當棧的空間不夠使用時再逐段擴大。因此可以設定兩個常量:stack_init_size(即儲存空間初始分配量)和stackincrement(即儲存空間分配增量)。

#pragma once

//結點結構體定義

typedef struct sqstack;

//引數巨集定義,方便進行擴容

#define stack_init_size

100#define stackincrement

10

//建立乙個空棧s

void

initstack

(sqstack &s)

s.top =

s.base;

s.stacksize =

stack_init_size

;return0;

}

void

gettop

(sqstack s

, selemtype &e)

e =*(

s.top -1)

;return0;

}

//插入元素e為新的棧頂元素

void

push

(sqstack &

s, selemtype e)

s.top =

s.base +

s.stacksize;

s.stacksize +=

stackincrement;}

*s.top++

= e;

return0;

}

void

pop(sqstack &

s, selemtype &e)

e =*--

s.top;

//立即向回步進一步,將內容賦予e變數

return0;

}

資料結構遍歷順序棧 資料結構 順序棧的實現

資料結構 順序棧的實現 1 快速開始 棧是一種遵循元素後進 push 先出 pop 規則的線性表,即最後加入的元素最先出來,它的實現可以用陣列或者鍊錶。它的特點如下 先出,先入後出。除了頭尾節點之外,每乙個元素有乙個前驅,有乙個後繼。2 實現棧 我們已經說過了,棧是一種線性表,故其底層是基於陣列或者...

資料結構 順序棧的實現

棧是一種遵循元素後進 push 先出 pop 規則的線性表,即最後加入的元素最先出來,它的實現可以用陣列或者鍊錶。它的特點如下 我們已經說過了,棧是一種線性表,故其底層是基於陣列或者鍊錶的。那麼,我們的重點是維護一種規則,即後進先出。我們始終要有乙個變數l來記錄最後乙個元素的位置 當彈出時,將l位置...

資料結構之順序棧 C 版

include include define maxlistsize 100 預設的儲存空間最大容量 using namespace std typedef string elemtype typedef structstack void initstack stack s void destroy...