C 資料結構 棧之順序棧

2021-10-03 15:50:57 字數 2256 閱讀 4351

棧(stack)是一種只允許在一端進行插入或刪除操作的線性表

棧頂(top)是允許進行插入刪除的一端。

棧底(bottom)是固定不允許插入刪除的一端。

棧的操作特性概括為後進先出(last in first out,lifo)。

相關知識:

c++結構體

c++指標

c++引用

線性表之順序表

假定線性表的元素型別為elemtype。

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

#define maxsize 50

typedef

struct

sqstack;

也可採用動態分配:

#define initsize 100

typedef

struct

sqstack;

c的初始動態分配語句:

s.data =

(elemtype*

)malloc

(sizeof

(elemtype)

*initsize)

;

c++的初始動態分配語句:

s.data =

new elemtype[initsize]

;

1.基本操作的實現取決於採用哪種儲存結構,儲存結構不同,演算法的實現也不同;

2.此處將棧頂指標top初始化為-1,相當於規定top指向當前的棧頂元素;

若初始化top為0,則規定top指向棧頂元素的下一位;

3.進棧操作:棧不滿時,棧頂指標先加1,再送值到棧頂元素;

4.出棧操作:棧非空時,先取出棧頂元素值,再將棧頂指標減1;

5.棧空條件:s.top == -1;棧滿條件:s.top == maxsize - 1。

//

// created by evian on 2020/3/8.

// 順序棧

#include

using

namespace std;

#define maxsize 50

typedef

int elemtype;

typedef

struct

sqstack;

void

initstack

(sqstack &s)

;bool

isempty

(sqstack s)

;bool

push

(sqstack &s, elemtype e)

;bool

pop(sqstack &s, elemtype &x)

;elemtype gettop

(sqstack s)

;void

display

(sqstack s)

;int

main()

//初始化

void

initstack

(sqstack &s)

//判棧空

bool

isempty

(sqstack s)

return

false;}

//進棧

bool

push

(sqstack &s, elemtype e)

else

}//出棧

bool

pop(sqstack &s, elemtype &x)

else

}//讀棧頂元素

elemtype gettop

(sqstack s)

else

}//列印棧中元素,棧底在前,棧頂在後

void

display

(sqstack s)

else

cout<

<

}}

以下為列印結果:

8---

>

4pop:48

--->

10top:

10

如有錯誤,還請指正!tky 0.

C 資料結構之棧 順序棧的實現

停更說明 國慶陪女朋友旅遊去了,並且發生了許多許多有趣的事情,有空再分享哈 這裡該來一條華麗麗的分割線 現在來說說資料結構中的棧,英文中好像是stack,翻譯過來棧其實是很形象的 棧的出口和入口相同,且只有乙個進出口 我們平時通過變數宣告 非new方法 申請來的儲存變數的方法其實就是棧記憶體。特點 ...

C 資料結構之棧的實現(順序棧)

首先我們定義了乙個棧模板類,它有幾個純虛函式,分別是棧類最常用的幾個函式 push 將元素放入棧頂 top 返回棧頂元素值 pop 彈出棧頂元素 clear 清空棧 析構函式會用到 同樣我們定義了判斷棧是否為空函式isempty 以及保護成員 棧的高度 長度 height 模板類定義 如下 temp...

資料結構之順序棧

棧的順序儲存結構用一組位址連續的儲存單元 陣列,依次存放自棧底到棧頂的資料元素。最簡單的一種棧的寫法如下 define maxsize 100 int stack maxsize int top 棧頂位置 void initstack void clearstack int gettop int e...