03資料結構的學習生涯 棧和佇列

2021-10-24 04:55:51 字數 2717 閱讀 3261

3.棧的鏈式表示

4.佇列的基本操作

5.佇列的順序表示

6.佇列的鏈式表示

7.棧的應用

initstack

(&s)

:初始化空棧

stackempty

(s):判空

push

(&s,

&x):入棧

pop(

&s,&x)

:出棧gettop

(s,&x)

:讀棧頂元素

destroystack

(&s)

:銷毀棧

#define maxsize 50

typedef

struct

sqstack;

// 初始化棧

void

initstack

(sqstack &s)

// 判空棧

bool

stackempty

(sqstack s)

// 入棧

bool

push

(sqstack &s, elemtype x)

// 出棧

bool

pop(sqstack &s, elemtype &x)

// 讀棧頂

bool

gettop

(sqstack s, elemtype &x)

// 定義

typedef

struct

shstack;

// 初始化

void

initstack

(shstack &s)

bool

isempty

(shstack s)

typedef

struct linknode

*listrck;

void

initstack

(listack &s)

initqueue

(&q)

;// 初始化佇列

queueempty

(q);

// 佇列判空

enqueue

(&q, x)

;// 入隊

dequeue

(&q,

&x);

// 出隊

gethead

(q,&x)

;// 讀隊頭元素

#define maxsize 50

typedef

struct

sqqueue;

/* 初始化佇列 */

void

initqueue

(sqqueue &q)

/* 隊判空 */

bool

isempty

(sqqueue q)

/* 入隊 */

bool

enqueue

(sqqueue &q, elemtype x)

/* 出隊 */

bool

dequeue

(sqqueue &q, elemtype x)

typedef

struct

linklnode;

typedef

struct

linkqueue;

/* 佇列初始化 */

void

initqueue

(linklnode &q)

/* 隊判空 */

bool

isempty

(linkqueue q)

/* 入隊(帶頭結點) */

bool

enqueue

(linkqueue &q, elemtype x)

/* 入隊(不帶頭結點) */

void

enqueue

(linkqueue &q, elemtype &x)

else

}/* 出隊(帶頭結點) */

bool

dequeue

(linkqueue &q, elemtype &x)

/* 出隊(不帶頭結點) */

bool

dequeue

(linkqueue &q, elemtype &x)

linklnode *p = q.front;

x = p-

>data;

q.front = p-

>next;

if(q.rear == p)

free

(p);

return

true

;}

bool

bracketcheck

(char str,

int length)

else

'&& str[i]=='

}return

stackempty

(s);

}

摘自王道《資料結構》

資料結構學習 棧和佇列

棧是限定僅在表尾進行插入和刪除操作的線性表。我們把插入和刪除的一段稱為棧頂,另一端稱為棧底,不含任何元素的棧稱為空棧。由於棧本身是乙個線性表,因此棧的儲存方式也有兩種,分別是順序儲存和鏈式儲存。既然棧是線性表的特列,那麼棧的順序儲存其實也是線性表順序儲存的簡化。我們稱為順序棧。1 兩棧的共享空間 此...

資料結構 棧和佇列

棧 基礎 知識棧 練習題 佇列 基礎知識 棧示意圖 後進先出 順序棧結構定義 define maxsize 1024 struct stack 操作函式 push 入棧 pop 出棧 struct lstack 鏈棧示意圖 操作函式 push 入棧 pop 出棧 注意 也可以直接呼叫系統已經寫好的庫...

資料結構 棧和佇列

本章的基本內容是 兩種特殊的線性表 棧和佇列 從資料結構角度看,棧和佇列是操作受限的線性表,他們的邏輯結構相同。從抽象資料型別角度看,棧和佇列是兩種重要的抽象資料型別。p棧 限定僅在表的一端進行插入和刪除操作的線性表。p允許插入和刪除的一端稱為棧頂,另一端稱為棧底。p空棧 不含任何資料元素的棧。a ...