佇列Queue的實現

2021-08-15 23:28:33 字數 1615 閱讀 1302

佇列:先進先出

兩種實現方式:

1.利用陣列

2.鏈式儲存

需要兩個變數指向隊頭front和隊尾rear,當入隊時,隊尾後移;出隊時,隊頭後移

使用陣列實現,當我們入隊至陣列滿,然後出隊至陣列空,此時雖然陣列為空,但是卻不能再入隊了,因為隊尾rear已經指向了陣列的最後乙個索引位置。那麼如何充分利用陣列呢?

通過一定的計算操作使得陣列虛擬為環形的陣列

package dream.linearlist.queue;

/** * 佇列:底層用陣列實現

* 規定佇列使用陣列的n-1個空間

*/public

class

arrqueue

public

boolean

isempty()

public

boolean

isfull()

public

void

addq(object o)

rear = (rear + 1) % maxsize;

queue[rear] = o;

}public object deleteq()

front = (front + 1) % maxsize;

return queue[front];

}public

void

display()

system.out.println();

}public

static

void

main(string args)

}

鍊錶可謂是佇列的最佳實現結構,因為鍊錶沒有長度的限制。

package dream.linearlist.queue;

/** * 佇列:使用鍊錶實現

*/class node

public

node(object data)

public

node()

}public

class

linkqueue

public

boolean

isempty()

public

void

addq(object o)

//否則新節點增加至尾指標後,同時尾指標後移,指向新增的節點

rear.next = newnode;

rear = newnode;

}public object deleteq()

//如果佇列只有乙個元素

node curr = front;

if(front == rear && rear != null)

front = front.next;

return curr.data;

}public

void

display()

system.out.println(rear.data);

}public

static

void

main(string args)

}

實現佇列 Queue

佇列 只允許在一端進行插入資料操作,在另一端進行刪除資料操作的特殊線性表,佇列具有先進先出fifo first in first out 入佇列 進行插入操作的一端稱為隊尾 出佇列 進行刪除操作的一端稱為隊頭 實現 是用鍊錶的結構實現更優一些,因為如果使用陣列的結構,出佇列在陣列頭上出資料,效率比較...

queue的長度 佇列 Queue

佇列 queue 是先進先出 fifo,first in first out 的線性表。在具體應用中通常用鍊錶或者陣列來實現。佇列只允許在後端 稱為rear 進行插入操作,在前端 稱為front 進行刪除操作。隊結構 迴圈佇列可以更簡單防止偽溢位 假溢位 的發生,但佇列大小是固定的。防止假溢位,如d...

佇列 Queue 的定義及實現

佇列是一種特殊的線性表。佇列不允許在中間部位進行操作!佇列的性質 先進先出 佇列的一些常用操作 建立佇列,銷毀佇列,清空佇列,進佇列,出佇列,獲取隊頭元素,獲取佇列的長度 佇列的順序儲存實現是基於線形表的 實現的,因此需要呼叫線形表的標頭檔案,線性表的 在前面的文章中已經詳細說明,此處不再贅述。順序...