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