C#栈的简单介绍

    栈(Stack)代表了一个只有一个出口的后进先出的对象集合。在列表中添加一项,称为推入元素,从列表中移除一项时,称为弹出元素。

    Stack<T> 类

    public class Stack<T> : IEnumerable<T>, ICollection, IEnumerable

  • 属性

    Count  获取 Stack 中包含的元素个数

  • 方法

    Pop   移除并返回在 Stack 的顶部的对象

    push  向 Stack 的顶部添加一个对象

    peek  返回在 Stack 的顶部的对象,但不移除它

    ToArray  创建数组并将堆栈元素复制到其中

    Contains   判断一个元素是否在栈中

    Clear  从 Stack 中移除所有的元素。

  • 实例

在此使用MSDN中例子。以下代码及结果显示图片来自:C#栈的简单介绍及应用

using System;

using System.Collections.Generic; 
class Example 

    public static void Main() 
    { 
        Stack<string> numbers = new Stack<string>(); 
        numbers.Push("one"); 
        numbers.Push("two"); 
        numbers.Push("three"); 
        numbers.Push("four"); 
        numbers.Push("five"); 
        // 遍历元素 
        Console.ForegroundColor = ConsoleColor.Green; 
        foreach (string number in numbers) 
        { 
            Console.WriteLine(number); 
        } 
        //pop弹出元素,并删除“five” 
        Console.WriteLine("\nPopping ‘{0}‘", numbers.Pop()); 
       //peek弹出元素,但不删除 
        Console.WriteLine("Peek at next item to destack: {0}",numbers.Peek()); 
       //再弹出再删除 
        Console.WriteLine("Popping ‘{0}‘", numbers.Pop()); 
       // 创建新栈,复制元素 
        Stack<string> stack2 = new Stack<string>(numbers.ToArray()); 
        Console.ForegroundColor = ConsoleColor.Magenta; 
        Console.WriteLine("\nContents of the first copy:"); 
        foreach (string number in stack2) 
        { 
            Console.WriteLine(number); 
        } 
        // 创建双倍size数组,从一般开始存储栈元素 
        string[] array2 = new string[numbers.Count * 2]; 
        numbers.CopyTo(array2, numbers.Count); 
        // 再创建双倍size栈,将数组再存入 
        Stack<string> stack3 = new Stack<string>(array2); 
        Console.ForegroundColor = ConsoleColor.Yellow; 
        Console.WriteLine("\nContents of the second copy, with duplicates and nulls:"); 
        foreach (string number in stack3) 
        { 
            Console.WriteLine(number); 
        } 
       //contains用法 
        Console.WriteLine("\nstack2.Contains(\"four\") = {0}", stack2.Contains("four")); 
        Console.WriteLine("\nstack2.Clear()"); 
       //Clear()用法 
        stack2.Clear(); 
        Console.WriteLine("\nstack2.Count = {0}", stack2.Count); 
    } 
}

结果如下:

时间: 2024-11-05 20:10:26

C#栈的简单介绍的相关文章

JVM内存各个区域分工简单介绍

JVM内存各个区域简单介绍: 程序计数器:程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器. 在使用多线程时,为了线程切换后能恢复到正确的执行位置,每条线程都需要有个独立的程序计数器,各条线程之间计数器互不影响,独立存储,我们称这类内存区域为"线程私有"的内存.如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址:如果正在执行的是Native方法,这个计数器值则为空(Undefined). 此内存区域是唯一一个在Java

ARM过程调用标准---APCS简单介绍

介绍 APCS,ARM 过程调用标准(ARM Procedure Call Standard),提供了紧凑的编写例程的一种机制,定义的例程能够与其它例程交织在一起.最显著的一点是对这些例程来自哪里没有明白的限制.它们能够编译自 C. Pascal.也能够是用汇编语言写成的. APCS 定义了: 对寄存器使用的限制. 使用栈的惯例. 在函数调用之间传递/返回參数. 能够被'回溯'的基于栈的结构的格式,用来提供从失败点到程序入口的函数(和给予的參数)的列表. APCS 不一个单一的给定标准,而是一系

OC基础(十二)内存简单介绍和OC的内存管理

一.内存简单介绍 内存结构 1.运行时分配 (1)栈:用户存放程序临时创建的局部变量(先进后出). (2)堆:动态分配内存段. 2.编译器分配 (1)BSS段:存放未初始化的全局变量和静态变量. (2)数据段:已初始化的全局变量和静态变量. (3)代码段:执行代码的一块区域. 地址由低到高:代码段 -> 数据段 -> BSS段-> 堆 -> 栈 内存分配方式 1.从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量

ActivityGroup简单介绍

ActivityGroup简单介绍 1.ActivityGroup的核心就是继承了该类,可以通过getLocalActivityManager()得到一个LocalActivityManager 如,LocalActivityManager  am= getLocalActivityManager(); 2.然后通过LocalActivityManager通过startActivity(String id, Intent intent),能够与指定的Actiivty绑定,而且返回一个Window

一个性能较好的jvm參数配置以及jvm的简单介绍

一个性能较好的webserverjvm參数配置: -server //服务器模式 -Xmx2g //JVM最大同意分配的堆内存,按需分配 -Xms2g //JVM初始分配的堆内存.一般和Xmx配置成一样以避免每次gc后JVM又一次分配内存. -Xmn256m //年轻代内存大小.整个JVM内存=年轻代 + 年老代 + 持久代 -XX:PermSize=128m //持久代内存大小 -Xss256k //设置每一个线程的堆栈大小 -XX:+DisableExplicitGC //忽略手动调用GC,

Android发展简单介绍

Android一词的本义指“机器人”,同一时候也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统.中间件.用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件.眼下最好的是Android2.0的摩托罗拉Droid Android公司介绍 国家:美国 业务:手机软件,操作系统 成立于:2003年 创办人:Andy Rubin,Andy McFadden.Richard Miner Chris White 中文名:安卓 眼下

Firefox OS简单介绍

Firefox OS系统架构框图 一些Firefox相关的术语简单介绍: B2G Boot to Gecko 的简称. Boot to Gecko Firefox OS 操作系统的project代号. 由于在该项目拥有官方名称之前B2G已经使用了非常久的原因.它经经常使用于指代 Firefox OS. Firefox OS FIrefox OS 基本上是指 Mozilla及合作伙伴应用在 B2G上的品牌和服务支持. 终于将创建一个公布的产品. Gaia Firefox OS 平台的用户接口层.

Cisco VPP(1) 简单介绍

一.简单介绍 VPP全称Vector Packet Processing.是Cisco2002年开发的商用代码. 2016年2月11号,Linux基金会创建FD.io项目.Cisco将VPP代码的开源版本号加入该项目.眼下已成为该项目的核心. VPP执行于用户空间,支持多种收包方式,经常使用的是DPDK. VPP主要有两个主要功能:框架可扩展:成熟的交换/路由功能. 二.扩展性 1.结点操作 VPP平台是通过graphnode串联起来处理数据包.相似于freebsd的netgraph. 通过插件

kubernetes简单介绍和实战

kubernetes简单介绍和实战 在本文中,我们从技术细节上对kubernetes进行简单运用介绍,利用一些yaml脚本层面上实例告诉大家kubernetes基本概念.Kubernetes以及它呈现出的编程范式值得你去使用和整合到自己的技术栈中. kubernetes简单介绍 kubernetes起源 Kubernetes最初认为是谷歌开源的容器集群管理系统,是Google多年大规模容器管理技术Borg或Omega的开源版本.准确来说的话,kubernetes更是一个全新的平台,一个全新的平台