資料結構之 《佇列》

2021-10-13 10:16:30 字數 2207 閱讀 4802

佇列:是一種先進先出(fifo)的線性表,允許在表的一端進行插入(即入隊),在表的另一端進行刪除(即出隊)。

入隊:隊尾(rear)插入;

出隊:隊頭(front)刪除;

(1)定義佇列結構體

**如下(示例):

typedef

int qdatatype;

typedef

struct qnode

qnode;

typedef

struct queue

queue;

(2)佇列初始化

**如下(示例):

void

queueinit

(queue* q)

(3)建立結點

**如下(示例):

qnode*

creatnode

(qdatatype data)

(4)入隊(尾插)

**如下(示例):

void

queuepush

(queue* q, qdatatype data)

++q->_size;

}

(5)出隊(頭刪)

**如下(示例):

void

queuepop

(queue* q)

}

(6)獲取隊尾元素

**如下(示例):

qdatatype queueback

(queue* q)

(7)獲取隊頭元素

**如下(示例):

qdatatype queuefront

(queue* q)

(8)佇列的大小

**如下(示例):

int

queuesize

(queue* q)

(9)判斷佇列是否為空

**如下(示例):

int

queueempty

(queue* q)

(10)銷毀佇列

**如下(示例):

void

queuedestroy

(queue* q)

q->_front = q->_rear =

null

; q->_size =0;

}

根據第二部的定義實現的佇列介面函式,則用佇列實現棧的功能就容易多了。 入棧:佇列的入隊操作。 出棧:除過最後乙個元素,佇列中其他元素迴圈進行出隊入隊操作,最後乙個元素只出隊。 獲取棧頂元素:隊尾元素的獲取。 棧是否為空:佇列是否為空。

typedef

struct

mystack;

mystack*

mystackcreate()

(1)入棧

void

mystackpush

(mystack* obj,

int x)

(2)出棧

int

mystackpop

(mystack* obj)

ret =

queuefront

(&obj->q)

;queuepop

(&obj->q)

;return ret;

}

(3)獲取棧頂元素

int

mystacktop

(mystack* obj)

(4)棧是否為空

int

mystackempty

(mystack* obj)

(5)棧釋放

void

mystackfree

(mystack* obj)

通過學習佇列線性表,對基本介面函式較為熟練掌握,而用佇列實現棧,只是呼叫了佇列的介面函式完成對應棧的操作。

資料結構之佇列

八 佇列 鏈式佇列 鍊錶實現 隊尾 rear 隊首 front 靜態佇列 陣列實現 必須是迴圈佇列 需要幾個引數來確定,各引數含義 1 佇列初始化 front和rear值都是0 2 佇列非空 front代表佇列第乙個元素 rear代表佇列最後乙個元素的 下乙個元素 3 佇列空 front和rear相...

資料結構之佇列

與棧相反,佇列是一種先進先出的線性表,它只允許在表的一端進行,而在另一端刪除元 素。在佇列中,允許插入的一端叫做隊尾,允許刪除的一端則稱為隊頭。1 鏈佇列 佇列的鏈式表示和實現 用鍊錶表示的佇列簡稱為鏈佇列,乙個鏈佇列顯然需要兩個分別指示對頭和隊尾的指標 分別稱為頭指 針和尾指標 才能唯一確定。這裡...

資料結構之佇列

一 佇列的介紹 佇列 queue 是一種線性儲存結構。它有以下幾個特點 1 佇列中資料是按照 先進先出 fifo,first in first out 方式進出佇列的。2 佇列只允許在 隊首 進行刪除操作,而在 隊尾 進行插入操作。佇列通常包括的兩種操作 入佇列 和 出佇列。1.佇列的示意圖 佇列中...