基本資料結構之 棧的實現

2021-10-06 05:18:50 字數 2860 閱讀 3151

順序棧

#include

using

namespace std;

//後進先出表 ——棧

//順序棧

#define maxsize 20

typedef

struct

sqstack;

//初始化棧

void

initsqstack

(sqstack*

& s)

//銷毀棧

void

destory

(sqstack*

& s)

//判斷棧是否為空

bool

stack_empty

(sqstack*

&s)//進棧

bool

push

(sqstack*

&s,int e)

//出棧

intpop

(sqstack*

& s,

int& e)

//取棧頂元素

bool

gettop

(sqstack*

&s,int

&e)int

main()

;int a[5]

=;initsqstack

(s);

for(

int i =

4; i >=

0; i--

)push

(s, a[i]);

while

(s->top !=-1

) cout <<

pop(s, e)

;return0;

}

鏈棧的實現

#include

using

namespace std;

//後進先出表 ——棧

//鏈棧

typedef

struct linknode

linkstack;

//初始化棧

void

initsqstack

(linkstack*

& s)

//銷毀棧

void

destory

(linkstack*

& s)

free

(p);

}//判斷棧是否為空

bool

stack_empty

(linkstack*

&s)//進棧

bool

push

(linkstack*

&s,int e)

//出棧

intpop

(linkstack*

& s,

int& e)

//取棧頂元素

bool

gettop

(linkstack*

&s,int

&e)int

main()

;int a[5]

=;initsqstack

(s);

for(

int i =

4; i >=

0; i--

)push

(s, a[i]);

while

(s->next!=

null

)//我的進棧元素是54321

cout <<

pop(s, e)

;//所以出棧的時候是12345

return0;

}

一道例題,經典的括號匹配問題,判斷輸入的是否是正確匹配

(( ))正確匹配

( ( ( ) )錯誤匹配

#include

using

namespace std;

//後進先出表 ——棧

//鏈棧

typedef

struct linknode

linkstack;

//初始化棧

void

initsqstack

(linkstack*

& s)

//銷毀棧

void

destory

(linkstack*

& s)

free

(p);

}//判斷棧是否為空

bool

stack_empty

(linkstack*

&s)//進棧

bool

push

(linkstack*

&s,int e)

//出棧

intpop

(linkstack*

& s,

int& e)

//取棧頂元素

bool

gettop

(linkstack*

&s,int

&e)int

main()

;initsqstack

(s);

for(i =

0; i <

6; i++

)else

flag =

false;}

}if(!

stack_empty

(s))

flag=

false

;destory

(s);

if(flag)

cout <<

"匹配成功"

;else

cout <<

"匹配失敗"

;return0;

}

基本資料結構 棧

基本資料結構 棧 一.線性資料結構 我們從四個簡單但重要的概念開始研究資料結構。棧,佇列,deques 雙向佇列 列表是一類資料的容器,它們資料元素之間的順序由新增或刪除的順序決定。一旦乙個資料元素被新增,它相對於前後元素一直保持該位置不變。諸如此類的資料結構被稱為線性資料結構。線性資料結構有兩端,...

基本資料結構 棧

我們從四個簡單但重要的概念開始研究資料結構。棧,佇列,deques 雙向佇列 列表是一類資料的容器,它們資料元素之間的順序由新增或刪除的順序決定。一旦乙個資料元素被新增,它相對於前後元素一直保持該位置不變。諸如此類的資料結構被稱為線性資料結構。線性資料結構有兩端,有時被稱為左右,某些情況被稱為前後。...

基本資料結構 棧

棧的特徵是後進先出 last in,first out,lifo 棧上的插入操作稱為壓入 push 刪除操作稱為彈出 pop 下面使用乙個陣列s n 來實現乙個最多容納n個元素的棧。定義乙個屬性指向最新插入的元素。棧的操作 如下 public class stack public stack int...