zoukankan      html  css  js  c++  java
  • C#编程(五十)----------栈

    栈与队列是一个非常类似的容器,他们的区别在于队列是先进先出,而栈是后进先出.

    StackStack<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();

  • 相关阅读:
    今天早上打算去菜市场看看是否开张
    昨天晚上雨岳阳通话后,晚上睡着肚子咕咕叫
    已经一周没有开锅了
    今天早上6:00起来,每天晚上回来6点多已经天黑
    其实值班也是一个说法
    感觉每天虽然没有做什么,但是就是觉得睡不够
    现在进入秋季,上海也是在20度左右
    mysql 下 计算 两点 经纬度 之间的距离 含具体sql语句
    java解析xml的几种方式
    myeclipse安装svn插件的多种方式
  • 原文地址:https://www.cnblogs.com/android-blogs/p/6603987.html
Copyright © 2011-2022 走看看