佇列是一種常見的資料結構,具有先進先出的特點。
其中內部有乙個首節點和尾節點,分別稱為隊首和隊尾。
今天便實現一下無頭不迴圈佇列。**實現:
/*
這時queue.**件
包括了queue各種操作函式的宣告和queuenode及queue的結構宣告
*/#pragma once
#ifndef _queue_h_
#define _queue_h_
typedef
int qudatatype;
//實現無頭不迴圈佇列
typedef
struct queuenode
queuenode;
typedef
struct queue
queue;
void
queueinit
(queue* pq)
;//初始化佇列
void
queuedestory
(queue* pq)
;//銷毀佇列
void
queuepush
(queue*pq, qudatatype x)
;//入佇列
void
queuepop
(queue*pq)
;//出佇列
qudatatype queuefront
(queue* pq)
;//取對首元素
qudatatype queueback
(queue*pq)
;//取隊尾元素
intqueueempty
(queue*pq)
;//佇列是否為空
intqueuesize
(queue*pq)
;//佇列元素個數
void
testqueue()
;#endif}
/*
queue.c檔案,包含所有函式的實現及測試
*/#include
"queue.h"
#include
#include
#include
void
queueinit
(queue* pq)
void
queuedestory
(queue* pq)
}void
queuepush
(queue*pq, qudatatype x)
newnode->_data = x;
newnode->_next =
null;if
(pq->_front == pq->_rear&&pq->_front==
null
)//這裡注意入隊第乙個節點和後續節點的方式不同
else
}void
queuepop
(queue*pq)
qudatatype queuefront
(queue* pq)
qudatatype queueback
(queue*pq)
intqueueempty
(queue*pq)
intqueuesize
(queue*pq)
return count;
}void
queueprint
(queue*pq)
printf
("rear\n");
}void
testqueue()
以上就是queue的所有實現。和stack一樣,看起來比較簡單,但是在實際中有許多應用場景,例如:敲黑板!!!作業系統的作業中斷,網路連線的請求包及一些複雜的問題,如二叉樹的非遞迴層序遍歷等。 資料結構 佇列(C語言實現)
佇列 c語言實現 include include define queueisempty arg arg size 0 define queueisfull arg arg size arg capacity 判斷是否為空或為滿。巨集定義,函式調銷太大。佇列使用size和capacity顯式的判斷是...
資料結構 佇列(C語言實現)
宣告 我是看了啊哈雷磊老師的 啊哈!演算法 寫的部落格,以後的以及以前的幾篇都是這樣子的 嘻嘻 覺得這本書寫的很有意思,就打算記錄一下,畢竟從圖書館借的書,以後還給學校,這嘛好的內容我就看不到了。當學生真好 當然了,內容有些小區別,不是完全一樣的。好了,我先說情景 自編的哈 小哼和小哈都在上小學5年...
資料結構之 佇列(C語言實現)
佇列 queue 屬於表,使用佇列時插入在一端進行而刪除在另一端進行。佇列的基本操作是enqueue 入隊 它是在表的末端 隊尾 rear 插入乙個元素,還有dequeue 出隊 它是刪除 或返回 在表的開頭 隊頭 front 的元素。如下圖 define minqueuesize 5 最小佇列元素...