資料結構與演算法 佇列

2021-10-02 22:12:00 字數 3685 閱讀 5924

佇列

佇列只允許在一端進行插入資料操作,在另一端進行刪除資料操作的特殊線性表,佇列具有先進先出的特性,就如同我們排隊一樣,先排的就先出去。

而進行插入的一端叫做隊尾,進行刪除的一端叫做隊頭

佇列可以用順序表和煉表的結構來實現,在這裡我們就用鍊錶來實現。

如入隊1, 2, 3,4

先入乙個4

在出乙個1

佇列的出入隊操作就是通過控制隊尾和隊首指標來實現的

當我們再全部出佇列時,就從1,2,3,4還是1, 2, 3,4

這裡我們就使用鍊錶的結構來實現佇列

資料結構

typedef

int datatype;

typedef

struct qlistnode

qnode;

// 佇列的結構

typedef

struct queue

queue;

實現的介面
// 初始化佇列 

void

queueinit

(queue* q)

;// 隊尾入佇列

void

queuepush

(queue* q, datatype data)

;// 隊頭出佇列

void

queuepop

(queue* q)

;// 獲取佇列頭部元素

datatype queuefront

(queue* q)

;// 獲取佇列隊尾元素

datatype queueback

(queue* q)

;// 獲取佇列中有效元素個數

intqueuesize

(queue* q)

;// 檢測佇列是否為空,如果為空返回非零結果,如果非空返回0

intqueueempty

(queue* q)

;// 銷毀佇列

void

queuedestroy

(queue* q)

;

初始化佇列
void

queueinit

(queue* q)

初始化隊尾和隊首

隊尾入佇列

void

queuepush

(queue* q, datatype data)

else

}

只需將新元素放到隊尾的下乙個位置,然後再讓這個節點成為新的隊尾即可隊首出佇列

void

queuepop

(queue* q)

else

}

獲取隊首元素

datatype queuefront

(queue* q)

獲取隊尾元素
datatype queueback

(queue* q)

獲取佇列中有效元素個數
int

queuesize

(queue* q)

return count;

}

遍歷一遍佇列即可檢測佇列是否為空

int

queueempty

(queue* q)

當隊首為空時就說明佇列中不存在元素,所以返回1

銷毀佇列

完整**標頭檔案

#pragma once

#include

#include

#include

typedef

int datatype;

typedef

struct qlistnode

qnode;

// 佇列的結構

typedef

struct queue

queue;

// 初始化佇列

void

queueinit

(queue* q)

;// 隊尾入佇列

void

queuepush

(queue* q, datatype data)

;// 隊頭出佇列

void

queuepop

(queue* q)

;// 獲取佇列頭部元素

datatype queuefront

(queue* q)

;// 獲取佇列隊尾元素

datatype queueback

(queue* q)

;// 獲取佇列中有效元素個數

intqueuesize

(queue* q)

;// 檢測佇列是否為空,如果為空返回非零結果,如果非空返回0

intqueueempty

(queue* q)

;// 銷毀佇列

void

queuedestroy

(queue* q)

;

函式實現

#pragma once

#include

"linkedqueue.h"

void

queueinit

(queue* q)

datatype queuefront

(queue* q)

datatype queueback

(queue* q)

intqueueempty

(queue* q)

intqueuesize

(queue* q)

return count;

}void

queuepush

(queue* q, datatype data)

else

}void

queuepop

(queue* q)

else

}void

queuedestroy

(queue* q)

q->front = q->rear =

null

;}

資料結構與演算法 佇列

學習了好長 一段時間的資料結構,由於時間關係一直沒有寫部落格。這次打算將這段時間的學習內容寫下來做個整理。佇列作為線性結構的一種,其實用性不用多說。這裡總結下兩種結構的佇列實現。迴圈佇列 先列下以順序表結構形成的普通順序佇列存在的問題 隊頭不斷刪除元素,將使佇列的頭部空出單元 隨著刪除 插入的進行,...

資料結構與演算法 佇列

佇列 佇列與棧不同,它是一種先進先出的結構 實現 1 陣列 2 鍊錶 記錄的資料 1 隊首位置 第乙個元素的位置 2 隊尾位置 最後乙個元素的位置 3 佇列大小 size 佇列操作 entryqueue 入隊 exitqueue 出隊 isqueueempty 隊列為空 isqueuefull 佇列...

演算法與資料結構 佇列

adt queue d d 資料關係 r r a i d,i 2,3,n r 約定a 1a 1 a1 端為隊首,a na n an 端為隊尾。基本操作 create 建立乙個空佇列 emptyque 若隊列為空,則返回true,否則返回false insertque x 向隊尾插入元素x delet...