這篇文章主要講解了“C#數據結構與隊列怎么實現”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C#數據結構與隊列怎么實現”吧!
C#數據結構與算法之隊列是一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的后端(back)進行插入操作。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。這也就是我們平常經常用說到的先進先出法則(FIFO),隊列這種法則,在中國好久以前就開始運用了,例如糧倉管理官員,在沒掌握這種法則前,倉庫底部的糧食都因時間太久而壞掉了,后來有聰明人士在糧倉二邊開個門,一邊進倉一邊出倉,這樣管理就方便多了。隊列中沒有元素時,稱為空隊列。
C#數據結構與算法之隊列實現的接口如下:
public interface IQueen﹤T﹥ { int Length(); bool IsEmpty(); bool IsFull(); void Clear(); void IN(T items); T Out(); T GetFrontItem(); }
C#數據結構與算法之隊列實現的原理與代碼如下:
public class JQueen﹤T﹥ : IQueen﹤T﹥ { private int size; private T[] item; private int front; private int back; public JQueen() : this(100) { size = 100; item = new T[100]; front = back = -1; } public JQueen(int length) { size = length; item = new T[length]; front = back = -1; } public T this[int index] { get { return item[index]; } set { item[index] = value; } } public int Front { get { return front; } set { front = value; } } public int Back { get { return back; } set { back = value; } } public int MaxLength { get { return size; } set { size = value; } } public int Length() { return (back - front + size) % size; } public bool IsEmpty() { return (front == back); } public bool IsFull() { return ((back + 1) % size == front); } public void Clear() { front = back = -1; } public void IN(T items) { if (IsFull()) { throw new ArgumentOutOfRangeException("RangeException", "Queen RangeException: queen is full"); } item[++back] = items; } public T Out() { T tmp = default(T); if (IsEmpty()) { throw new ArgumentOutOfRangeException("RangeException", "Queen RangeException: queen is empty"); } tmp = item[++front]; return tmp; } public T GetFrontItem() { if (IsEmpty()) { throw new ArgumentOutOfRangeException("RangeException", "Queen RangeException: queen is empty"); } return item[front + 1]; } }
C#數據結構與算法之隊列的測試隊列代碼:
public class Program { static void Main(string[] args) { try { JQueen﹤string﹥ JQ = new JQueen﹤string﹥(); Console.WriteLine(JQ.IsEmpty()); //是否為空 Console.WriteLine(JQ.IsFull()); //是否滿隊 Console.WriteLine(JQ.MaxLength); //初始化時隊列的長度 Console.WriteLine(JQ.Length()); //隊列元素長度 Console.WriteLine(JQ.Front); //隊頭位置 Console.WriteLine(JQ.Back); //隊尾位置 JQ.IN("A"); //插入元素 JQ.IN("B"); JQ.IN("C"); JQ.IN("D"); Console.WriteLine(JQ.GetFrontItem()); //隊頭元素 Console.WriteLine("------元素出隊后隊頭元素-------"); JQ.Out(); //出A JQ.Out(); Console.WriteLine(JQ.GetFrontItem()); //出隊二個元素后隊頭元素 Console.ReadLine(); } catch (Exception ex) { Console.WriteLine(ex.Message); //異常 Console.ReadLine(); } } }
C#數據結構與算法之隊列程序運行結果如下:
感謝各位的閱讀,以上就是“C#數據結構與隊列怎么實現”的內容了,經過本文的學習后,相信大家對C#數據結構與隊列怎么實現這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。