C#隊列的簡單使用
隊列的特性很簡答,就是先進先出,一般利用數(shù)組來實現(xiàn)。
實現(xiàn)隊列自然要實現(xiàn)幾個函數(shù):入隊,出隊,判斷隊滿,判斷隊空,獲得隊頭,隊尾。
實現(xiàn)隊列的關(guān)鍵在于隊頭指針和隊尾指針的設(shè)置:
- 假設(shè)初始狀態(tài)下,隊頭指針為0,隊尾指針為-1,那么兩個指針指的位置分別就是隊頭與隊尾。當(dāng)隊尾的下一個是隊頭時隊空,當(dāng)隊尾的下下個是隊頭時隊滿。
- 假設(shè)初始狀態(tài)下,隊頭隊尾指針都為0,那么隊尾指針指的是隊尾,而隊頭指針的下一個位置才是隊頭。當(dāng)兩指針相等時隊空,當(dāng)隊尾指針的下一個是隊頭時隊滿。
如果我們畫個圖就會發(fā)現(xiàn),不管怎么設(shè)置指針,隊滿時數(shù)組一定還有一個空位。所以數(shù)組長度應(yīng)該比隊列長度多1。
同時為了方便,我們會把隊列指針設(shè)置為循環(huán)的,即每次移動后取余數(shù)組的長度。

public class MyCircularQueue {
private int front;
private int rear;
private int[] queue;
public MyCircularQueue(int k) {
queue=new int[k+1];
front=0;
rear=-1;
}
public bool EnQueue(int value) {
if((rear+2)%queue.Length==front)
return false;
rear++;rear=rear%queue.Length;
queue[rear]=value;
return true;
}
public bool DeQueue() {
if((rear+1)%queue.Length==front)
return false;
front++;front=front%queue.Length;
return true;
}
public int Front() {
if(!IsEmpty())
return queue[front];
else
return -1;
}
public int Rear() {
if(!IsEmpty())
return queue[rear];
else
return -1;
}
public bool IsEmpty() {
if((rear+1)%queue.Length==front)
return true;
else
return false;
}
public bool IsFull() {
if((rear+2)%queue.Length==front)
return true;
else
return false;
}
}實際上C#也有一個隊列庫,如下圖所示

需要注意的是Dequeque和ToArray的返回類型都是object,可能需要進行強制轉(zhuǎn)換
class Program
{
static void Main(string[] args)
{
Queue q = new Queue();
q.Enqueue('A');
char ch = (char)q.Dequeue();
Console.WriteLine("The removed value: {0}", ch);
}
}到此這篇關(guān)于C#隊列的簡單使用的文章就介紹到這了,更多相關(guān)C#隊列內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
c#數(shù)據(jù)綁定之向查詢中添加參數(shù)(.Net連接外部數(shù)據(jù)庫)
本實例主要練習(xí)了ADO.Net連接到外部數(shù)據(jù)庫的基礎(chǔ)上,向查詢中添加參數(shù)。使用的是ACCESS數(shù)據(jù)庫2014-04-04
C#開發(fā)微信門戶及應(yīng)用(5) 用戶分組信息管理
這篇文章主要為大家詳細(xì)介紹了C#開發(fā)微信門戶及應(yīng)用第五篇,用戶分組信息管理,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06
Ruby創(chuàng)建數(shù)組方法總結(jié)
在本篇文章里小編給大家分享了關(guān)于Ruby創(chuàng)建數(shù)組方法的知識點內(nèi)容,對戲有興趣的朋友們學(xué)習(xí)下。2019-01-01
C#實現(xiàn)讀取USB轉(zhuǎn)串口參數(shù)并顯示在ComboBox
在很多應(yīng)用程序中,尤其是那些需要與外部硬件通信的程序中,自動檢測和讀取串口參數(shù)是一個非常有用的功能,下面我們就來看看如何在C#中實現(xiàn)這一功能吧2024-01-01
C#實現(xiàn)的封裝CURD到SqlHelper類用法簡單分析
這篇文章主要介紹了C#實現(xiàn)的封裝CURD到SqlHelper類用法,涉及數(shù)據(jù)庫相關(guān)配置方法及SqlHelper類的簡單使用技巧,代碼中包含了較為詳盡的注釋便于理解,需要的朋友可以參考下2017-11-11

