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

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

開發 后端 算法
C#數據結構與算法之棧淺析主要向你介紹C#數據結構與算法之棧的概念和實現,棧的使用是程序的一種思路,希望本文對你有所啟發。

C#數據結構與算法之棧(stack)在計算機科學中是限定僅在表尾進行插入或刪除操作的線形表。它按照后進先出的原則存儲數據,先進入的數據被壓入棧底,最后的數據在棧頂,需要讀數據的時候從棧頂開始彈出數據(最后一個數據被第一個讀出來,它只能在某一端插入和刪除的特殊線性表。用桶堆積物品,先堆進來的壓在底下,隨后一件一件往堆。取走時,只能從上面一件一件取。堆和取都在頂部進行,底部一般是不動的。

C#數據結構與算法之棧就是一種類似桶堆積物品的數據結構,進行刪除和插入的一端稱棧頂,另一堆稱棧底。插入一般稱為進棧(PUSH),刪除則稱為退棧(POP)。 棧也稱為后進先出表(LIFO表)。

C#數據結構與算法之棧1、進棧(PUSH)算法

◆若TOP≥n時,則給出溢出信息,作出錯處理(進棧前首先檢查棧是否已滿,滿則溢出;不滿則作②);

◆置TOP=TOP+1(棧指針加1,指向進棧地址);

◆S(TOP)=X,結束(X為新進棧的元素);

C#數據結構與算法之棧2、退棧(POP)算法

◆若TOP≤0,則給出下溢信息,作出錯處理(退棧前先檢查是否已為空棧, 空則下溢;不空則作②);

◆X=S(SOP),(退棧后的元素賦給X);

◆TOP=TOP-1,結束(棧指針減1,指向棧頂)。

C#數據結構與算法之棧的實現接口:

  1. public interface IStack<T>  
  2. {  
  3.     int Length();  
  4.     bool IsEmpty();  
  5.     void Clear();  
  6.     void Push(T items);  
  7.     T Pop();  
  8.     T GetPopValue();  

下面的代碼是C#數據結構與算法之棧的實現的類:

  1. public class JStack<T> : IStack<T>  
  2. {  
  3.     private int size;  
  4.     private T[] item;  
  5.     private int top;   
  6.  
  7.     public T this[int index]  
  8.     {  
  9.         get { return item[index]; }  
  10.         set { item[index] = value; }  
  11.     }   
  12.  
  13.     public int Size  
  14.     {  
  15.         get { return size; }  
  16.         set { size = value; }  
  17.     }   
  18.  
  19.     public int Top  
  20.     {  
  21.         get { return top; }  
  22.     }  
  23.  
  24.  
  25.  
  26.     public JStack(int length)  
  27.     {  
  28.         top = -1;  
  29.         size = length;  
  30.         item = new T[length];  
  31.     }   
  32.  
  33.     public int Length()  
  34.     {  
  35.         return top + 1;  
  36.     }         
  37.  
  38.     public bool IsEmpty()  
  39.     {  
  40.         return (top == -1);  
  41.     }   
  42.  
  43.     public void Clear()  
  44.     {  
  45.         top = -1;  
  46.     }   
  47.  
  48.     public void Push(T items)  
  49.     {  
  50.         if (top < size - 1)  
  51.         {  
  52.             item[++top] = items;  
  53.         }  
  54.     }   
  55.  
  56.     public T Pop()  
  57.     {  
  58.         T tmp = default(T);  
  59.         if (!IsEmpty())  
  60.         {  
  61.             tmp = item[top];  
  62.         }  
  63.         return tmp;  
  64.     }   
  65.  
  66.     public T GetPopValue()   
  67.     {  
  68.         if (IsEmpty())  
  69.         {  
  70.             throw new ArgumentNullException("棧已經為空""Item Null");  
  71.         }  
  72.         return item[top];  
  73.     }  
  74.  } 

下面是C#數據結構與算法之棧進行測試:

  1. try 
  2. {  
  3.     JStack<string> js = new JStack<string>(20);  
  4.     Console.WriteLine("------棧剛初始化完成----");  
  5.     Console.WriteLine(js.Length());  
  6.     Console.WriteLine(js.IsEmpty().ToString());  
  7.     js.Push("A");  
  8.     js.Push("B");  
  9.     js.Push("C");  
  10.     js.Push("D");  
  11.     Console.WriteLine("------棧已經插入數據----");  
  12.     Console.WriteLine(js.Length());  
  13.     Console.WriteLine(js.IsEmpty().ToString());  
  14.  
  15.     Console.WriteLine("------取棧頂數據----");  
  16.     Console.WriteLine(js.GetPopValue().ToString());  
  17.  
  18.     Console.WriteLine("------清棧----");  
  19.     js.Clear();  
  20.     Console.WriteLine(js.GetPopValue().ToString());  
  21.     Console.ReadLine();  
  22. }  
  23. catch (Exception ex)  
  24. {  
  25.     Console.WriteLine(ex.Message);  
  26.     Console.ReadLine();  
  27. }  

當你需要把對象的順序反過來的時候,你就可以按順序把對象放棧里,然里再從棧里取出來,這時功能就實現了。

C#數據結構與算法之棧的相關內容就向你介紹到這里,希望對你學習C#數據結構與算法中的棧有所幫助。

【編輯推薦】

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

2009-08-11 14:43:42

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#數據結構

2023-09-25 12:23:18

Python

2009-08-11 09:19:52

C#選擇排序C#算法

2009-08-12 18:35:17

C#數據結構

2021-03-12 09:13:47

Java數據結構算法

2020-12-17 10:12:33

數據結構算法隊列

2020-10-30 09:56:59

Trie樹之美

2022-09-21 07:57:33

二叉搜索樹排序二叉樹

2022-09-26 07:56:53

AVL算法二叉樹

2020-10-21 14:57:04

數據結構算法圖形

2023-03-08 08:03:09

數據結構算法歸并排序

2020-10-20 08:14:08

算法與數據結構

2011-04-11 11:23:17

隊列數據結構

2011-04-11 12:22:11

數據結構C++

2020-12-31 05:31:01

數據結構算法

2022-01-18 19:13:52

背包問題數據結構算法
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲成人一区 | 亚洲久草视频 | 成人精品久久久 | av一区二区在线观看 | 亚洲精品一区国产精品 | 能看的av | 欧美日韩一区二区三区不卡视频 | av中文字幕在线播放 | 小早川怜子xxxxaⅴ在线 | 一区视频在线 | 欧美极品在线观看 | 最新国产精品视频 | 毛片网站在线观看 | 久久午夜精品福利一区二区 | 中文字幕高清一区 | 亚洲国产一区在线 | 人人做人人澡人人爽欧美 | 久久噜噜噜精品国产亚洲综合 | 91色视频在线观看 | 欧美淫片 | 美女131mm久久爽爽免费 | 久久久久香蕉视频 | 欧美成人手机在线 | 午夜在线| 欧美1级| 亚洲欧美久久 | 成人亚洲视频 | 日日摸日日添日日躁av | 国产成人艳妇aa视频在线 | 四虎成人免费视频 | 国产精品久久久久久久久久久免费看 | 欧美一区二区三区精品免费 | 精品国产一区二区三区四区在线 | 国产精品视频yy9299一区 | 久久综合影院 | 成人免费在线电影 | 国产精品久久久久婷婷二区次 | 天堂在线www| 中文字幕第十五页 | a视频在线观看 | 国产一区二区三区网站 |