博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#编程(五十)----------栈
阅读量:6485 次
发布时间:2019-06-23

本文共 2065 字,大约阅读时间需要 6 分钟。

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

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

 

转载于:https://www.cnblogs.com/FinleyJiang/p/7602671.html

你可能感兴趣的文章
ASP.NET状态管理之八(会话Session)
查看>>
转载:大型网站架构演变和知识体系
查看>>
set集合
查看>>
SVN服务器的搭建和使用
查看>>
mvc中枚举的使用和绑定枚举值到DropDownListFor
查看>>
多目标跟踪的评价指标
查看>>
HTTPS(SSL)详解以及PHP调用方法
查看>>
突发小事件,USB接口问题
查看>>
Nginx负载均衡配置实例详解
查看>>
L1-009. N个数求和
查看>>
实参传递不当导致的运行时错误
查看>>
sqlserver 批量删除存储过程(转)
查看>>
自建型呼叫中心
查看>>
Inno setup中定制安装路径
查看>>
要懂得对你的老板好一点!
查看>>
visio如何让动态连接线的单箭头变成双箭头?
查看>>
poj 1273 Drainage Ditches 网络流最大流基础
查看>>
Bash: how to check if a process id (PID) exists
查看>>
Mirantis Fuel fundations
查看>>
启动Tomcat一闪而过——分析及解决过程
查看>>