C 寫演算法之佇列的基本操作

2021-10-02 06:49:13 字數 715 閱讀 3888

用陣列來實現佇列的一種比較好的方式是迴圈佇列。

迴圈佇列不但充分利用了陣列的空間,還避免元素整體移動的麻煩。

迴圈佇列要注意的是隊頭和隊尾的下標:

計算方式:

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,如果佇列中含有...