成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#數據結構與算法之隊列淺析

開發 后端 算法
C#數據結構與算法之隊列是什么概念呢?C#數據結構與算法之隊列是如何實現的呢?那么本文就向你介紹這方面的內容。

C#數據結構與算法之隊列是一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的后端(back)進行插入操作。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。這也就是我們平常經常用說到的先進先出法則(FIFO),隊列這種法則,在中國好久以前就開始運用了,例如糧倉管理官員,在沒掌握這種法則前,倉庫底部的糧食都因時間太久而壞掉了,后來有聰明人士在糧倉二邊開個門,一邊進倉一邊出倉,這樣管理就方便多了。隊列中沒有元素時,稱為空隊列。

C#數據結構與算法之隊列實現的接口如下:

  1. public interface IQueen﹤T﹥  
  2. {  
  3.     int Length();  
  4.     bool IsEmpty();  
  5.     bool IsFull();  
  6.     void Clear();  
  7.     void IN(T items);  
  8.     T Out();  
  9.     T GetFrontItem();  

C#數據結構與算法之隊列實現的原理與代碼如下:

  1. public class JQueen﹤T﹥ : IQueen﹤T﹥  
  2. {  
  3.     private int size;  
  4.     private T[] item;  
  5.     private int front;  
  6.     private int back;  
  7.  
  8.     public JQueen()  
  9.         : this(100)  
  10.     {  
  11.         size = 100;  
  12.         item = new T[100];  
  13.         front = back = -1;  
  14.     }  
  15.  
  16.     public JQueen(int length)  
  17.     {  
  18.         size = length;  
  19.         item = new T[length];  
  20.         front = back = -1;  
  21.     }  
  22.  
  23.     public T this[int index]  
  24.     {  
  25.         get { return item[index]; }  
  26.         set { item[index] = value; }  
  27.     }  
  28.  
  29.     public int Front  
  30.     {  
  31.         get { return front; }  
  32.         set { front = value; }              
  33.     }  
  34.  
  35.     public int Back  
  36.     {  
  37.         get { return back; }  
  38.         set { back = value; }  
  39.     }  
  40.  
  41.     public int MaxLength  
  42.     {  
  43.         get { return size; }  
  44.         set { size = value; }  
  45.     }          
  46.  
  47.     public int Length()  
  48.     {  
  49.         return (back - front + size) % size;  
  50.     }  
  51.  
  52.     public bool IsEmpty()  
  53.     {  
  54.         return (front == back);  
  55.     }  
  56.  
  57.     public bool IsFull()  
  58.     {  
  59.         return ((back + 1) % size == front);  
  60.     }  
  61.  
  62.     public void Clear()  
  63.     {  
  64.         front = back = -1;  
  65.     }  
  66.  
  67.     public void IN(T items)  
  68.     {  
  69.         if (IsFull())  
  70.         {  
  71.             throw new ArgumentOutOfRangeException("RangeException",
  72.  "Queen RangeException: queen is full");  
  73.         }  
  74.         item[++back] = items;  
  75.     }  
  76.  
  77.     public T Out()  
  78.     {  
  79.         T tmp = default(T);  
  80.         if (IsEmpty())  
  81.         {  
  82.             throw new ArgumentOutOfRangeException("RangeException"
  83. "Queen RangeException: queen is empty");  
  84.         }  
  85.         tmp = item[++front];  
  86.         return tmp;  
  87.     }  
  88.  
  89.     public T GetFrontItem()  
  90.     {  
  91.         if (IsEmpty())  
  92.         {  
  93.             throw new ArgumentOutOfRangeException("RangeException"
  94. "Queen RangeException: queen is empty");  
  95.         }  
  96.         return item[front + 1];  
  97.     }  
  98.  

C#數據結構與算法之隊列的測試隊列代碼:

  1. public class Program  
  2. {  
  3.     static void Main(string[] args)  
  4.     {  
  5.         try 
  6.         {  
  7.             JQueen﹤string﹥ JQ = new JQueen﹤string﹥();  
  8.             Console.WriteLine(JQ.IsEmpty());  //是否為空  
  9.             Console.WriteLine(JQ.IsFull());   //是否滿隊  
  10.             Console.WriteLine(JQ.MaxLength);  //初始化時隊列的長度  
  11.             Console.WriteLine(JQ.Length());     //隊列元素長度  
  12.             Console.WriteLine(JQ.Front);      //隊頭位置  
  13.             Console.WriteLine(JQ.Back);       //隊尾位置  
  14.             JQ.IN("A");  //插入元素  
  15.             JQ.IN("B");  
  16.             JQ.IN("C");  
  17.             JQ.IN("D");  
  18.             Console.WriteLine(JQ.GetFrontItem());   //隊頭元素  
  19.             Console.WriteLine("------元素出隊后隊頭元素-------");  
  20.             JQ.Out();  //出A  
  21.             JQ.Out();   
  22.             Console.WriteLine(JQ.GetFrontItem());   //出隊二個元素后隊頭元素  
  23.             Console.ReadLine();  
  24.         }  
  25.         catch (Exception ex)  
  26.         {  
  27.             Console.WriteLine(ex.Message);   //異常  
  28.             Console.ReadLine();  
  29.         }  
  30.     }  

C#數據結構與算法之隊列程序運行結果如下:

C#數據結構與算法之隊列程序運行結果

C#數據結構與算法之隊列相關的內容就向你介紹到這里,希望通過C#數據結構與算法之隊列的介紹使你對C#數據結構與算法有所了解。

【編輯推薦】

  1. C#二叉樹遍歷算法實現淺析
  2. C#算法之約瑟夫環算法淺析
  3. C#數據結構與算法之線性表淺析
  4. C#數據結構與算法之順序表淺析
  5. C#數據結構與算法之構造線性表的類淺析
責任編輯:仲衡 來源: 博客園
相關推薦

2009-08-11 14:51:11

C#數據結構與算法

2009-08-11 14:30:32

C#數據結構與算法

2009-08-11 14:14:42

C#數據結構與算法

2009-08-11 14:36:17

C#數據結構與算法線性表

2009-08-03 17:38:12

排序算法C#數據結構

2021-03-09 06:30:32

JAVA數據結構算法

2009-08-11 09:19:52

C#選擇排序C#算法

2021-07-16 07:57:34

Python數據結構

2009-08-12 18:35:17

C#數據結構

2020-10-30 09:56:59

Trie樹之美

2022-09-26 07:56:53

AVL算法二叉樹

2022-09-21 07:57:33

二叉搜索樹排序二叉樹

2020-12-31 05:31:01

數據結構算法

2020-12-17 10:12:33

數據結構算法隊列

2020-10-21 14:57:04

數據結構算法圖形

2011-04-11 11:23:17

隊列數據結構

2011-04-11 12:48:36

隊列數據結構C++

2023-03-08 08:03:09

數據結構算法歸并排序

2021-06-11 06:10:09

Python數據結構算法

2020-10-12 11:48:31

算法與數據結構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 蜜桃臀av一区二区三区 | 精品99爱视频在线观看 | 亚洲精品日日夜夜 | 麻豆91av| 久久一区二区免费视频 | av免费在线观看网站 | 国产 日韩 欧美 中文 在线播放 | 91久久综合亚洲鲁鲁五月天 | 男人天堂午夜 | 91资源在线 | 中文字幕日韩欧美一区二区三区 | 四虎成人免费电影 | 成人精品一区二区 | 日韩欧美在线视频 | 有码一区 | 亚洲免费一区二区 | www.欧美.com | 亚洲精品乱码久久久久久按摩 | 欧美另类视频 | 成人激情视频免费观看 | 久久免费看 | 国产福利在线播放麻豆 | 在线成人免费视频 | 黄色毛片在线看 | 一级片网址 | 国产三级精品三级在线观看四季网 | 国产精品久久7777777 | 欧美精品在线一区二区三区 | 亚洲精品视频在线播放 | julia中文字幕久久一区二区 | 国产精品视频久久久 | 福利片在线 | 欧美日韩免费 | 成人av电影免费在线观看 | 一区二区三区精品视频 | 无码一区二区三区视频 | 欧美啪啪 | 欧美精品啪啪 | 91精品国产欧美一区二区 | 亚洲成av| 亚洲精品视频在线看 |