cs 棧和佇列

2021-10-25 06:20:07 字數 2885 閱讀 6523

棧:先進後出-從上面進從上面出下層的要取出必須先取上層的

佇列:先進先出-先進的排到最後面,後進的在最前面,要出的話從後面出

push

(&s,x) 進棧

pop(

&s,x) 出棧

順序棧

#define maxsize 50          

//定義棧中元素的最大個數

typedef

struct

sqstack;

棧頂指標:s.top,初始為s.top=-1;

棧頂元素:s.data[s.top];top始終指向棧頂元素

進棧:棧不滿時,棧頂指標top先加1,再進賦值

出棧:棧非空時,先取棧頂元素,棧頂指標再減1

棧空條件:s.top == -1;

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

棧長:s.top+1;

棧基本運算:

(1)初始化棧

void

initstack

(&s)

(2)判空棧

bool

stackempty

(s)

(3)進棧

bool

push

(sqstack &s,elemtype x)

(4)出棧

bool

pop(sqstack &s,elemtype x)

(5)讀取棧頂元素

bool

gettop

(sqstack s,elemtype &x)

鏈式棧

typedef

struct linknode

*listack;

//定義棧型別

隊頭:允許刪除的一端,先進的元素在這端

隊尾:允許插入的一端;後進的元素在這端

先進先出:先進的排到最後面,後進的在最前面,要出的話從後面出

enqueue

(&q,x)

;// 入隊

dequeue

(&q,

&x);

// 出隊

1、順序佇列:

#define maxsize 50                 

//定義佇列中元素的最大個數

typedef

struct

sqqueue;

初始狀態(對空條件):q.front == q.rear==0;隊頭指標和隊尾指標在同乙個位置

進隊:隊不滿時,先在隊尾入隊值,再將隊尾指標rear加1

出隊:隊不空時,在隊頭取值,再將對頭指標front加1

隊尾指標rear是指向隊尾最後乙個元素的下乙個位置,是空的

隊頭指標front是指向隊頭的第一元素,不為空

2、迴圈佇列

(將順序佇列臆造成乙個環狀的空間)

初始時:q.front == q.rear==0

隊首指標進1:q.front = (q.front+1)%maxsize

隊尾指標進1:q.rear=(q.rear+1)%maxsize

佇列長度:(q.rear+maxsize-q.front)%maxsize

隊滿條件:(q.rear+1)%maxsize==q.front

對空條件:q.front == q.rear

佇列中元素的個數:(q.rear-q.front+maxsize)%maxsize

(1)初始化

void

initqueue

(&q)

(2)判隊空

bool

isqueue

(q)

(3)入隊

bool

enqueue

(sqqueue &q,elemtype x)

(4)出隊

bool

enqueue

(sqqueue &q,elemtype &x)

3、鏈式佇列

儲存型別:

typedef

struct

linknode;

typedef

struct

linkqueue;

當:q.front == null且q.rear==null時,鏈式隊列為空

(1)初始化

void

initqueue

(linkqueue &q)

(2)判隊空

bool

isempty

(linkqueue q)

(3)入隊

bool

enqueue

(linkqueue &q,elemtype x)

(4)出隊

bool

dequeue

(linkqueue &q,elemtype &x)

棧和佇列 單調佇列 單調棧

講解部落格鏈結 一 單調棧 1 什麼是單調棧?單調棧是指乙個棧內部元素具有嚴格單調性 單調遞增,單調遞減 的一種資料結構。2 單調棧的兩個性質 滿足從棧頂到棧底具有嚴格的單調性 滿足後進先出的特徵,越靠近棧底的元素越早的進棧。3 元素進棧的過程 對於當前進棧元素x 如果x 棧頂元素,x 進棧。否則 ...

棧和佇列 佇列

佇列 又一種特殊的線性表 佇列 queue 是只允許在一端進行插入,而在另一端進行刪除的運算受限的線性表 允許刪除的一端稱為隊頭 front 允許插入的一端稱為隊尾 rear 當佇列中沒有元素時稱為空佇列。佇列的修改是依先進先出的原則進行的。新來的成員總是加入隊尾 即不允許 加塞 每次離開的成員總是...

棧和佇列(佇列)

列隊類 public class myqueue 帶引數構造方法,引數為陣列大小 public myqueue int maxsize 新增資料 從隊尾插入 public void insert int value arr end value 注意是 end 不是end element 刪除資料,從...