只允許在一端進行插入資料操作,在另一端進行刪除資料操作的特殊線性表,佇列具有先進先出 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...