欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#隊(duì)列的簡(jiǎn)單使用

 更新時(shí)間:2022年03月17日 15:36:29   作者:ZEKEGU1997  
隊(duì)列的特性很簡(jiǎn)答,就是先進(jìn)先出,一般利用數(shù)組來(lái)實(shí)現(xiàn),本文就介紹了C#隊(duì)列的簡(jiǎn)單使用,文中根據(jù)實(shí)例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

隊(duì)列的特性很簡(jiǎn)答,就是先進(jìn)先出,一般利用數(shù)組來(lái)實(shí)現(xiàn)。

實(shí)現(xiàn)隊(duì)列自然要實(shí)現(xiàn)幾個(gè)函數(shù):入隊(duì),出隊(duì),判斷隊(duì)滿(mǎn),判斷隊(duì)空,獲得隊(duì)頭,隊(duì)尾。

實(shí)現(xiàn)隊(duì)列的關(guān)鍵在于隊(duì)頭指針和隊(duì)尾指針的設(shè)置:

  • 假設(shè)初始狀態(tài)下,隊(duì)頭指針為0,隊(duì)尾指針為-1,那么兩個(gè)指針指的位置分別就是隊(duì)頭與隊(duì)尾。當(dāng)隊(duì)尾的下一個(gè)是隊(duì)頭時(shí)隊(duì)空,當(dāng)隊(duì)尾的下下個(gè)是隊(duì)頭時(shí)隊(duì)滿(mǎn)。
  • 假設(shè)初始狀態(tài)下,隊(duì)頭隊(duì)尾指針都為0,那么隊(duì)尾指針指的是隊(duì)尾,而隊(duì)頭指針的下一個(gè)位置才是隊(duì)頭。當(dāng)兩指針相等時(shí)隊(duì)空,當(dāng)隊(duì)尾指針的下一個(gè)是隊(duì)頭時(shí)隊(duì)滿(mǎn)。

如果我們畫(huà)個(gè)圖就會(huì)發(fā)現(xiàn),不管怎么設(shè)置指針,隊(duì)滿(mǎn)時(shí)數(shù)組一定還有一個(gè)空位。所以數(shù)組長(zhǎng)度應(yīng)該比隊(duì)列長(zhǎng)度多1。

同時(shí)為了方便,我們會(huì)把隊(duì)列指針設(shè)置為循環(huán)的,即每次移動(dòng)后取余數(shù)組的長(zhǎng)度。

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;
    }
}

實(shí)際上C#也有一個(gè)隊(duì)列庫(kù),如下圖所示

 需要注意的是Dequeque和ToArray的返回類(lèi)型都是object,可能需要進(jìn)行強(qiáng)制轉(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#隊(duì)列的簡(jiǎn)單使用的文章就介紹到這了,更多相關(guān)C#隊(duì)列內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論