資料結構 佇列及相關操作 重點

2021-09-23 10:19:00 字數 1771 閱讀 5103

只允許在一端進行插入資料操作,在另一端進行刪除資料操作的特殊線性表,佇列具有先進先出 fifo(first in first out)

入佇列:進行插入操作的一端稱為隊尾

出佇列:進行刪除操作的一端稱為隊頭

佇列的假溢位

順序結構實現佇列,在刪除元素(出佇列)時,直接搬移元素,時間複雜度為o(n),但是頭指標向後移動,容易造成假溢位,前邊本來存在空間,但是從後邊入佇列時卻進不去,稱為假溢位,假溢位的乙個解決方法是迴圈佇列

主要用到煉表裡的尾插和頭刪

定義佇列的結構

typedef int qdatatype;

typedef struct qnode

qnode;

typedef struct queue

;

佇列的初始化

//佇列的初始化

void queueinit(queue* q)

申請空間

//申請空間

qnode* buyqueuenode(qdatatype data)

pnewnode->_data = data;

pnewnode->_pnext = null;

return pnewnode;

}

入佇列(即尾插)

//入佇列(即尾插)

void queuepush(queue* q, qdatatype data)

}

出佇列(頭刪)

//出佇列(頭刪)

void queuepop(queue* q)

else

free(pdelnode);

}

獲取隊頭元素

//獲取隊頭元素

qdatatype queuefront(queue* q)

獲取隊尾元素

//獲取隊尾元素

qdatatype queueback(queue* q)

當前佇列的有效元素總數

//當前佇列的有效元素總數

int queuesize(queue* q)

return count;

}

判斷當前佇列是否為空

//判斷當前佇列是否為空

int queueempty(queue* q)

釋放佇列的空間

//釋放佇列的空間

void queuedestroy(queue* q)

q->_front = q->_back = null;

}

測試程式

void testqueue()

資料結構 棧和佇列相關操作

include using namespace std 棧typedef struct stack 初始化棧 void stack init stack s 入棧 void stack push stack s,int e s.top e s.top 出棧 void stack pop stack ...

資料結構 順序迴圈佇列的相關操作

佇列是一種先進先出的資料儲存結構,一般作業系統中用的比較多,本文主要介紹對順序佇列的入佇列,出佇列,遍歷佇列操作。定義順序佇列 我們可以用乙個陣列來表示乙個順序儲存結構,兩個整數來分別指向陣列的下標,表示佇列的頭指標和尾指標 typedef struct queue queue 定義佇列之後首先就是...

C語言資料結構中佇列的相關操作

include define maxsize 4 宣告佇列元素,可以任意定製 typedef int bool int menu select 宣告選擇函式 typedef struct queue 宣告結構體型別 queue void create queue queue q,int maxsiz...