麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C# > 正文

C#實現順序隊列和鏈隊列的代碼實例

2019-10-29 19:58:05
字體:
來源:轉載
供稿:網友

上篇棧的實現基本是一個思路:

廢話不多說,直接寫代碼吧

//自定義隊列接口namespace 隊列{  interface IQueue<T>  {    int Count { get; }    int GetLength();    bool IsEmpty();    void Clear();    void Enqueue(T item);    T Dequeue();    T Peek();  }}
//順序隊列的實現類namespace 隊列{  class SeqQueue<T> : IQueue<T>  {    private T[] data;    private int count; //表示當前有幾個元素    private int front; //隊首  (隊首索引-1)    private int rear;  //隊尾 (隊尾元素索引)    public SeqQueue(int size)    {      data = new T[size];      count = 0;      front = -1;      rear = -1;    }    public SeqQueue()    {      data = new T[10];      count = 0;      front = -1;      rear = -1;    }    public int Count    {      get      {        return count;      }    }    public void Clear()    {      count = 0;      front = -1;      rear = -1;    }    public T Dequeue()    {      if(count > 0)      {        T temp = data[front + 1];        front++;        count--;        return temp;      }      else      {        Console.WriteLine("隊列中沒有數據,無法取得隊首數據");        return default(T);      }    }    public void Enqueue(T item)    {      if (count == data.Length)      {        Console.WriteLine("隊列元素已滿,不可添加");      }      else      {        if (rear == data.Length -1) //最后一個位置是否有值        {          data[0] = item;          rear = 0;          count++;        }        else        {          data[rear + 1] = item;          rear += 1;          count++;        }      }    }    public int GetLength()    {      return count;    }    public bool IsEmpty()    {      return count == 0;    }    public T Peek()    {      T temp = data[front + 1];      return temp;    }  }}
//鏈隊列的節點類namespace 隊列{  class Node<T> {    private T data;    private Node<T> next;    public Node(T data)    {      this.data = data;    }    public T Data    {      get { return data; }      set { data = value; }    }    public Node<T> Next    {      get { return next; }      set { next = value; }    }  }}
//鏈隊列的實現類namespace 隊列{  class LinkQueue<T> : IQueue<T>  {    private Node<T> front; //頭結點    private Node<T> rear; //尾結點    private int count; //表示元素個數    public LinkQueue()    {      front = null;      rear = null;      count = 0;    }    public int Count    {      get      {        return count;      }    }    public void Clear()    {      front = null;      rear = null;      count = 0;    }    public T Dequeue()    {      if (count == 0)      {        Console.WriteLine("隊列為空");        return default(T);      }else if(count == 1)      {        T temp = front.Data;        front = rear = null;        count = 0;        return temp;      }      else      {        T temp = front.Data;        front = front.Next;        count--;        return temp;      }    }    public void Enqueue(T item)    {      Node<T> newNode = new Node<T>(item);      if (count == 0)      {        front = newNode;        rear = newNode;        count = 1;      }      else      {        rear.Next = newNode;        rear = newNode;        count++;      }    }    public int GetLength()    {      return count;    }    public bool IsEmpty()    {      return count == 0;    }    public T Peek()    {      if (front != null)      {        return front.Data;      }      else      {        return default(T);      }    }  }}
//以上兩個實現類的測試類namespace 隊列{  class Program  {    static void Main(string[] args)    {      //CRL中的隊列      //Queue<int> queue = new Queue<int>();      //自己的寫的順序隊列      //SeqQueue<int> queue = new SeqQueue<int>();      //自己的鏈隊列      LinkQueue<int> queue = new LinkQueue<int>();      queue.Enqueue(12);      queue.Enqueue(34);      queue.Enqueue(56);      queue.Enqueue(78);      queue.Enqueue(90);      Console.WriteLine("添加五個元素后的大小:"+ queue.Count);      int i = queue.Dequeue();  //出隊(取出并刪除)      Console.WriteLine("取出的元素是: " + i);      Console.WriteLine("出隊后隊列大小:" + queue.Count);      int j = queue.Peek();      Console.WriteLine("Peek取出的元素是: " + j);      Console.WriteLine("PeeK后隊列大小:" + queue.Count);      queue.Clear();      Console.WriteLine("清空后的隊列大小:" + queue.Count);      Console.ReadKey();    }  }}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 色播一区 | 一级毛片在线免费播放 | 久久久综合久久久 | 高清视频91| 色妇视频 | 一级大片一级一大片 | www久久艹 | 一级毛片播放 | 国产成人精品无人区一区 | 91九色国产视频 | av电影在线观看网站 | 成人国产精品一区 | 色综合久久99 | 国产免费观看视频 | 欧美在线观看视频一区 | 一区二区三区精品国产 | 97黄色网 | 91久久久久久久 | 免费久久久久久久 | 久色亚洲 | 9191色| 亚洲天堂一级片 | av影片在线观看 | 国产噜噜噜 | 免费午夜视频 | 九九热精品在线视频 | 精品一区二区三区毛片 | 黄色特级一级片 | 久久精品a一级国产免视看成人 | 狠狠干天天操 | 91网视频在线观看 | 亚洲国产网址 | 国产一级不卡毛片 | 一区二区三区在线视频观看58 | av在线等| 欧美a视频| 得得啪在线 | 香蕉视频18 | 99亚洲伊人久久精品影院红桃 | 成年人在线视频免费 | 精品一区二区中文字幕 |