C#編程(五十)----------棧

來源:互聯網
上載者:User

標籤:capacity   virtual   方法   time   system   表示   枚舉   實現   namespace   

棧與隊列是一個非常類似的容器,他們的區別在於隊列是先進先出,而棧是後進先出.

Stack與Stack<T>,像隊列一樣,棧也提供了泛型與非泛型版本.

Stack的方法:

方法

說明

Pop()

從棧頂讀棧並刪除元素

Push()

存放資料,存在棧頂

Peek()

從棧頂讀,但不刪除

 

案例:

using System;

using System.Collections;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace 棧

{

    class Program

    {

        static void Main(string[] args)

        {

            Stack<string> stack = new Stack<string>();

            stack.Push("A");

            stack.Push("B");

            stack.Push("C");

 

            foreach (var item in stack)

            {

                Console.WriteLine(item);

            }

            //因為棧是後進先出的,所以結果是CBA

 

            //以上我們使用列舉程式,是不會改變元素的,不可以刪除

            //現在我們用Pop來讀取輸出

            Console.WriteLine("使用Pop方法讀取元素");

            while (stack.Count!=0)

            {

                Console.WriteLine(stack.Pop());

            }

            Console.WriteLine("Pop之後的棧大小: {0}", stack.Count);

            Console.ReadKey();

 

        }

    }

}

一.建立棧

Stack類的建構函式提供了三種重載形式:

建構函式

說明

public Stack()

使用預設的初始哈容器建立Stack的新執行個體

public Stack(ICollection col)

使用ICollection集合複製的元素來建立Stack的執行個體,並具有與集合元素數目相同的初始容量

public Stack(int initialCapacity)

通過自定初始容量來建立Stack類的執行個體

案例:

            Stack sack = new Stack();//使用預設容量

            Stack sack1 = new Stack(new string[5] { "堆棧元素一", "堆棧元素二", "堆棧元素三", "堆棧元素四", "堆棧元素五" });//使用由string數組中的幾何元素初始化棧對象

            Stack sack2 = new Stack(20);//建立棧對象並指定20個元素

 

 

 

二.元素入棧

為了將元素壓入棧中,可以調用Stack類的Push方法.這個方法的聲明如下:

public virtual void Push(object obj)

這個方法需要一個object類型的參數obj,表示要被壓入到棧中的對象.案例:

            Stack sk = new Stack();

            sk.Push("1");

            sk.Push("2");

            sk.Push("3");

            sk.Push("4");

            sk.Push("5");

            //顯示棧中內容

            foreach (var item in sk)

            {

                Console.WriteLine(item);

            }

            //可以看到元素額排列順序是後入棧的排列在最前面,符合後進先出的規範

            Console.ReadKey();

 

 

 

三.元素出棧

元素出棧是指:移除Stack頂部的元素,並返回這個元素的引用.可以通過調用Pop方法實現元素出棧.另外Stack還提供了Peek方法,用於擷取頂部元素對象,這個方法並不移除頂部元素.這兩個方法的聲明如下:

public virtual object Peek();

public virtual object Pop();

案例:

            Stack sk = new Stack();

            sk.Push("1");

            sk.Push("2");

            sk.Push("3");

            sk.Push("4");

            sk.Push("5");

            //顯示棧中內容

            foreach (var item in sk)

            {

                Console.WriteLine(item);

            }

            //可以看到元素額排列順序是後入棧的排列在最前面,符合後進先出的規範

 

            Console.WriteLine("棧頂元素是: {0}", sk.Peek()); ;

            Console.WriteLine("移除頂部的元素: {0}",sk.Pop());

            //顯示棧中內容

            foreach (var item in sk)

            {

                Console.WriteLine(item);

            }

            Console.ReadKey();

 

C#編程(五十)----------棧

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.