資料結構 用C語言實現乙個佇列

2021-09-22 18:26:47 字數 1555 閱讀 1439

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

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

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

佇列可以以鍊錶和陣列的結構實現,使用鍊錶的結構更具有優勢,因為使用陣列的結構,在出佇列的時候效率太低了。

佇列結構:

typedef int qdatatype;

typedef struct qnode

qnode;

typedef struct queue

queue;

要實現的功能:

void queueinit(queue* q);//佇列初始化

void queuepush(queue* q, qdatatype data);//入隊

void queuepop(queue* q);//出隊

qdatatype queuefront(queue* q);//獲取隊頭元素

qdatatype queueback(queue* q);//獲取隊尾元素

int queuesize(queue* q);//佇列中有效元素的個數

int queueempty(queue* q);//佇列是否為空

void queuedestory(queue* q);//銷毀佇列

佇列初始化:

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) 

free(pdelnode);

}

獲取隊頭、隊尾及有效節點個數:

qdatatype queuefront(queue* q) 

qdatatype queueback(queue* q)

int queuesize(queue* q)

return count;

}

判斷佇列是否為空、銷毀佇列:

int queueempty(queue* q) 

void queuedestory(queue* q)

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

}

完成。。。

資料結構C語言實現 銷毀乙個佇列

如下 include includetypedef char elemtype typedef struct qnode qnode queueptr typedef struct linkqueue 建立乙個佇列 void initqueue linkqueue q q front next nu...

資料結構 佇列(C語言實現)

佇列 c語言實現 include include define queueisempty arg arg size 0 define queueisfull arg arg size arg capacity 判斷是否為空或為滿。巨集定義,函式調銷太大。佇列使用size和capacity顯式的判斷是...

c語言實現資料結構 佇列

佇列是一種常見的資料結構,具有先進先出的特點。其中內部有乙個首節點和尾節點,分別稱為隊首和隊尾。今天便實現一下無頭不迴圈佇列。實現 這時queue.件 包括了queue各種操作函式的宣告和queuenode及queue的結構宣告 pragma once ifndef queue h define q...