用陣列來實現佇列的一種比較好的方式是迴圈佇列。
迴圈佇列不但充分利用了陣列的空間,還避免元素整體移動的麻煩。
迴圈佇列要注意的是隊頭和隊尾的下標:
計算方式:
1.新的隊頭下標:front = (front+1)%array.length
2.新的隊尾下標:rear = (rear+1)%array.length
3.(隊尾下標+1)%陣列長度 = 隊頭下標 時為佇列滿了
用陣列實現迴圈佇列的**:
using system;
namespace test01
/// /// 入隊
///
public void enqueue(int value)
array[rear] = value;
rear = (rear + 1) % array.length;
}/// /// 出隊
///
public int dequeue()
int value = array[front];
front = (front + 1) % array.length;
return value;
}/// /// 列印佇列
///
public void println()}}
class program
}}
C 寫演算法之鍊錶的基本操作
鍊錶 查詢元素的時間複雜度是o n 但是,更新 插入 刪除的時間複雜度都是o 1 對於需要頻繁插入和刪除元素的場景,用鍊錶更為合適。單鏈表實現 using system namespace test01 public class mylinkedlist node temp head for int...
C 寫演算法之優先佇列
優先佇列不再遵循先入先出的原則,誰的優先順序最高,誰先出隊,分為兩種情況 1.最大優先佇列,無論入隊順序如何,都是當前最大的元素優先出隊 2.最小優先佇列,無論入隊順序如何,都是當前最小的元素優先出隊 優先佇列的實現 二叉堆的特性 1.最大堆堆頂是整個堆中的最大元素 2.最小堆的堆頂是整個堆中最小的...
c 佇列的基本操作 C語言佇列
1 佇列是一種先進先出的線性表,只允許在隊尾進行插入,在隊首進行刪除。initqueue 初始化佇列 enqueue 進佇列 dequeue 出佇列 isqueueempty 判斷佇列是否為空 isqueuefull 判斷佇列是否已滿 1 初始化佇列,一般令tail 0,head 0,如果佇列中含有...