栈和队列是非常重要的两种数据结构,栈和队列也是线性结构,线性表、栈和队列这三种数据结构的数据元素和元素的逻辑关系也相同

差别在于:线性表的操作不受限制,栈和队列操作受限制(遵循一定的原则),因此栈和队列也称为受限制的线性表。

栈的定义:操作在表的尾端进行的线性表,栈顶:TOP,栈底:Bottom。栈中没有数据:空栈Empty Stack

表示方法:S=(a1,a2,a3,a4……..an)a1为栈底的元素,an为栈顶的元素.这N个数据按照先后顺序插入到栈内,找出栈内数据则相反

遵循的原则(Last In First Out 即 LIFO) 或者 (First In Last Out 即 FILO)

现实生活中也有很多列子:洗盘子,用盘子

C#2.0 以下版本只提供了非泛型的 Stack 类,该类继承了 ICollection、 IEnumerable 和 ICloneable 接口。 C#2.0 提供了泛型的

Stack<T>类,该类继承 了 IEnumerable<T>、ICollection 和 IEnumerable 接口。

栈的存储和实现

1.顺序栈 :用一块连续存储的空间来存储栈中的元素,连续的空间就是数组表示了。

2.链栈:在线性链表的基础上进行操作的,也就说存储结构采用的是链表的形式而操作采用的是FILO方式。

生活中的实例

除了洗盘子是不是还有其他的使用方式呢?

1.数值转换 是将非负数的十进制转换成其他进制的数,一般的解决方法是辗转相除法,例如:十进制5142转

成八进制:

有图我们可以看出 (5142)10=(12026)8

转换思想:

1.判断N不为0 N%8压入到栈中

2.判断N不为0 N%8压入到栈中

最后N为0 停止,从而栈中的数据全部一个一个的POP得到八进制数值。

2.程序设计中常用的问题:括号匹配问题,简化起见,只有两种括号匹配即:()和[] 嵌套的顺序是任意的

([]()) 匹配 [()[()][]] 匹配 [(]) 不匹配,加入有一堆这样的匹配的符号怎么判断呢?

思想:1.如果栈为空,则PUSH

2.如果括号和栈顶的括号匹配,则将栈顶的括号POP

3.如果括号和栈栈顶的括号不匹配,则将括号PUSH

4.最后结束时候判断栈是否为空,为空则匹配,不为空则不匹配

3.常用的算术表达式…..可以自己思考一下……

未完待续………

C# 数据结构 栈 Stack的更多相关文章

  1. java数据结构 栈stack

    栈(Stack) 栈(Stack)实现了一个后进先出(LIFO)的数据结构. 你可以把栈理解为对象的垂直分布的栈,当你添加一个新元素时,就将新元素放在其他元素的顶部. 当你从栈中取元素的时候,就从栈顶 ...

  2. 数据结构—栈(Stack)

    栈的定义--Stack 栈是只允许在末端进行插入和删除的线性表.栈具有后进先出的特性(LIFO ,Last In Fast Out). 学过数据结构的人都知道:栈可以用两种方式来实现,一种方法是用数组 ...

  3. 模板 - 数据结构 - 栈/Stack

    普通的栈大家都会写,STL的栈据说默认实现方式是deque,没关系反正deque跑得飞快. 这里收录的是一些奇怪的栈,当然双栈实现的队列收录在队列里面. 对顶栈 众所周知,栈可以维护一系列前缀和,包括 ...

  4. 数据结构----栈stack

    栈的概念与数据结构 栈(有时称为“后进先出栈”)是一个元素的有序集合,其中添加移除新元素总发生在同一端.这一端通常称为“顶部”.与顶部对应的端称为“底部”.栈的底部很重要,因为在栈中靠近底部的元素是存 ...

  5. [C++][数据结构]栈(stack)的实现

    对于栈的定义,前人之述备矣. 我实现的是一个stack<value>容器类,支持push,pop,top,size,empty,clear和copy construction操作. 主要的 ...

  6. python基本数据结构栈stack和队列queue

    1,栈,后进先出,多用于反转 Python里面实现栈,就是把list包装成一个类,再添加一些方法作为栈的基本操作. 栈的实现: class Stack(object): #初始化栈为空列表 def _ ...

  7. 【Java数据结构学习笔记之二】Java数据结构与算法之栈(Stack)实现

      本篇是java数据结构与算法的第2篇,从本篇开始我们将来了解栈的设计与实现,以下是本篇的相关知识点: 栈的抽象数据类型 顺序栈的设计与实现 链式栈的设计与实现 栈的应用 栈的抽象数据类型   栈是 ...

  8. Python与数据结构[1] -> 栈/Stack[0] -> 链表栈与数组栈的 Python 实现

    栈 / Stack 目录 链表栈 数组栈 栈是一种基本的线性数据结构(先入后出FILO),在 C 语言中有链表和数组两种实现方式,下面用 Python 对这两种栈进行实现. 1 链表栈 链表栈是以单链 ...

  9. java数据结构——栈(Stack)

    学习数据结构与算法是枯燥的,但只有坚持不懈的积累,才会有硕果累累的明天. /** * 继续学习Java数据结构 ————栈 * 栈的实现其实还是使用数组,只不过我们不能直接访问数组下标,而是通过一个指 ...

随机推荐

  1. HttpClient4.5.2 连接池原理及注意事项

    随着微服务的流行,服务之间的http调用越来越多,遇到的问题也比较多,写这边文章的目的也是将自己遇到的坑和解决方案跟大家分享 一.为什么要用Http连接池 1.降低延迟:如果不采用连接池,每次连接发起 ...

  2. ffmpeg的logo, delogo滤镜参数设置

    FFmpeg的添加logo,去logo滤镜的组合共有三种方式: 1. 只有添加logo滤镜 $ ./ffmpeg -i INPUT.FLV  \ -vf movie=/opt/logo.png[log ...

  3. shell查找文件并删除

    -mtime 0 表示文件改动时间距离当前为0天的文件.即距离当前时间不到1天(24小时)以内的文件. -mtime 1 表示文件改动时间距离当前为1天的文件,即距离当前时间1天(24小时-48小时) ...

  4. BBC 生命大设计

    BBC霍金的生命的意义一视频中,有一段图案特别漂亮,于是我就写了一下,具体的繁殖规则是这样的:有存活体和死方格两个部分构成,我分别用 ' * ' 和 ‘  ’ 表示.当一个存活体周围有超过三个存活体时 ...

  5. 再谈内存管理与ARC运行机制(一)

    内存管理 内存在Objective-C开发中是一种相对稀缺的资源,拿Iphone4为例,它的内存只有512mb,所以妥善的处理好所创造,所使用的每个对象与变量都将成为一个问题.在ARC出现以前,同大部 ...

  6. 指向函数的指针 分类: C/C++ 2015-07-13 11:03 14人阅读 评论(0) 收藏

    原文网址:http://www.cnblogs.com/zxl2431/archive/2011/03/25/1995285.html 讲的很清楚,备份记录. (一) 用函数指针变量调用函数 可以用指 ...

  7. 条带深度 队列深度 NCQ IOPS

    http://blog.csdn.net/striping/article/details/17449653 IOPS 即I/O per second,即每秒进行读写(I/O)操作的次数,多用于数据库 ...

  8. Silverlight OOB 程序自动更新

    Silverlight OOB 程序 提供了非常方便的自动更新功能! 要让 Silverlight OOB 安装到客户端电脑后实现自动更新,必须实现以下两个条件: 一.为 程序的 xap  文件进行签 ...

  9. ubuntu自定义服务模板

    根据他人代码修改: #!/bin/sh ### BEGIN INIT INFO # Provides: <pragram name> # Required-Start: $local_fs ...

  10. (转)JS获取当前对象大小以及屏幕分辨率等

    Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> ...