自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#數(shù)據(jù)結(jié)構(gòu)與算法之隊(duì)列淺析

開發(fā) 后端 算法
C#數(shù)據(jù)結(jié)構(gòu)與算法之隊(duì)列是什么概念呢?C#數(shù)據(jù)結(jié)構(gòu)與算法之隊(duì)列是如何實(shí)現(xiàn)的呢?那么本文就向你介紹這方面的內(nèi)容。

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

C#數(shù)據(jù)結(jié)構(gòu)與算法之隊(duì)列實(shí)現(xiàn)的接口如下:

  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#數(shù)據(jù)結(jié)構(gòu)與算法之隊(duì)列實(shí)現(xiàn)的原理與代碼如下:

  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#數(shù)據(jù)結(jié)構(gòu)與算法之隊(duì)列的測(cè)試隊(duì)列代碼:

  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());   //是否滿隊(duì)  
  10.             Console.WriteLine(JQ.MaxLength);  //初始化時(shí)隊(duì)列的長(zhǎng)度  
  11.             Console.WriteLine(JQ.Length());     //隊(duì)列元素長(zhǎng)度  
  12.             Console.WriteLine(JQ.Front);      //隊(duì)頭位置  
  13.             Console.WriteLine(JQ.Back);       //隊(duì)尾位置  
  14.             JQ.IN("A");  //插入元素  
  15.             JQ.IN("B");  
  16.             JQ.IN("C");  
  17.             JQ.IN("D");  
  18.             Console.WriteLine(JQ.GetFrontItem());   //隊(duì)頭元素  
  19.             Console.WriteLine("------元素出隊(duì)后隊(duì)頭元素-------");  
  20.             JQ.Out();  //出A  
  21.             JQ.Out();   
  22.             Console.WriteLine(JQ.GetFrontItem());   //出隊(duì)二個(gè)元素后隊(duì)頭元素  
  23.             Console.ReadLine();  
  24.         }  
  25.         catch (Exception ex)  
  26.         {  
  27.             Console.WriteLine(ex.Message);   //異常  
  28.             Console.ReadLine();  
  29.         }  
  30.     }  

C#數(shù)據(jù)結(jié)構(gòu)與算法之隊(duì)列程序運(yùn)行結(jié)果如下:

C#數(shù)據(jù)結(jié)構(gòu)與算法之隊(duì)列程序運(yùn)行結(jié)果

C#數(shù)據(jù)結(jié)構(gòu)與算法之隊(duì)列相關(guān)的內(nèi)容就向你介紹到這里,希望通過C#數(shù)據(jù)結(jié)構(gòu)與算法之隊(duì)列的介紹使你對(duì)C#數(shù)據(jù)結(jié)構(gòu)與算法有所了解。

【編輯推薦】

  1. C#二叉樹遍歷算法實(shí)現(xiàn)淺析
  2. C#算法之約瑟夫環(huán)算法淺析
  3. C#數(shù)據(jù)結(jié)構(gòu)與算法之線性表淺析
  4. C#數(shù)據(jù)結(jié)構(gòu)與算法之順序表淺析
  5. C#數(shù)據(jù)結(jié)構(gòu)與算法之構(gòu)造線性表的類淺析
責(zé)任編輯:仲衡 來源: 博客園
相關(guān)推薦

2009-08-11 14:51:11

C#數(shù)據(jù)結(jié)構(gòu)與算法

2009-08-11 14:30:32

C#數(shù)據(jù)結(jié)構(gòu)與算法

2009-08-11 14:14:42

C#數(shù)據(jù)結(jié)構(gòu)與算法

2009-08-11 14:36:17

C#數(shù)據(jù)結(jié)構(gòu)與算法線性表

2009-08-03 17:38:12

排序算法C#數(shù)據(jù)結(jié)構(gòu)

2021-03-09 06:30:32

JAVA數(shù)據(jù)結(jié)構(gòu)算法

2021-07-16 07:57:34

Python數(shù)據(jù)結(jié)構(gòu)

2009-08-12 18:35:17

C#數(shù)據(jù)結(jié)構(gòu)

2009-08-11 09:19:52

C#選擇排序C#算法

2020-10-30 09:56:59

Trie樹之美

2022-09-21 07:57:33

二叉搜索樹排序二叉樹

2022-09-26 07:56:53

AVL算法二叉樹

2020-12-31 05:31:01

數(shù)據(jù)結(jié)構(gòu)算法

2020-10-21 14:57:04

數(shù)據(jù)結(jié)構(gòu)算法圖形

2011-04-11 12:48:36

隊(duì)列數(shù)據(jù)結(jié)構(gòu)C++

2011-04-11 11:23:17

隊(duì)列數(shù)據(jù)結(jié)構(gòu)

2020-12-17 10:12:33

數(shù)據(jù)結(jié)構(gòu)算法隊(duì)列

2023-03-08 08:03:09

數(shù)據(jù)結(jié)構(gòu)算法歸并排序

2021-06-11 06:10:09

Python數(shù)據(jù)結(jié)構(gòu)算法

2020-10-20 08:14:08

算法與數(shù)據(jù)結(jié)構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)