c語言實現資料結構 佇列

2021-09-28 13:39:31 字數 1916 閱讀 7556

佇列是一種常見的資料結構,具有先進先出的特點。

其中內部有乙個首節點和尾節點,分別稱為隊首和隊尾。

今天便實現一下無頭不迴圈佇列。**實現:

/*

這時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 最小佇列元素...