首先佇列成員是先進先出(first in first out,fifo)的,即新增資料只能從後面新增,而刪除資料只能從第一位刪除。y
如果用簡單的陣列來儲存資料,那麼每刪除乙個資料就要把所有項向前移動一位,理論上也可行,實現起來也較為簡單,但這裡我們用另外一種方式——鍊錶。
struct node
這樣在乙個佇列中我們就可以只儲存第乙個和最後乙個節點的指標;
node *front//它指向第乙個結構體
node *rear//它指向最後乙個結構體
我們所要建立的佇列應當滿足以下功能:
#include
class
queue
; node *front;
//指向第乙個結構體
node *rear;
//指向最後乙個結構體
enum
;int curr_number;
//儲存佇列當前資料的個數
const
int toll_numbers;
//佇列能儲存的資料總個數
queue
(const queue &que)
:toll_numbers(0
);queue operator=(
const queue &que)
;//將複製建構函式和賦值操作符放置在私有區域,避免佇列物件使用這兩種函式,因為我們還不打算實現此功能;
public
:queue
(const
int num = size)
;//建構函式,並提供乙個預設值
~queue()
;//析構函式
bool
enqueue
(const
int&i)
;//新增資料
bool
dequeue
(int
&i);
//刪除資料
intsize()
const
;//返回當前元素個數
intoperator
(int odn)
;//用訪問資料};
intmain()
//檢視a,b,c的值
std::cout << a << b << c;
}//函式定義
queue::
queue
(const
int num)
:toll_numbers
(num)
queue::
~queue()
}bool queue::
enqueue
(const
int& i)
bool queue::
dequeue
(int
& i)
int queue::
size()
const
//返回當前元素個數
int queue::
operator
(int odn)
return temp-
>i;
}
現在這個佇列雖然已經實現了一些最基本功能,但它仍然還不是乙個成熟的佇列,還需要很多很多改進的地方! c 棧,佇列,迴圈佇列 簡單實現
棧 include using namespace std template struct node template class stack bool push const t e const t pop const t gtop bool empty int size bool clear pr...
簡單實現佇列
簡單實現佇列題目 現有名稱為namei且處理時間為timei的n個任務按順序排成一列,cpu通過迴圈排程法逐一處理這些任務,每個任務最多處理q ms 這個時間被稱為時間片 如果q ms之後任務尚未處理完畢,那麼該任務將被移動至隊伍末尾,cpu隨即開始處理下乙個任務。輸入 n q name1 time...
c 簡單實現優先順序佇列
優先順序佇列 優先順序佇列 是不同於先進先出佇列的另一種佇列。每次從佇列中取出的是具有最高優先權的元素。include using namespace std template struct node 節點實現佇列 template class priority queue public prior...