您当前的位置: 首页 > 

苍狼王unity学院

暂无认证

  • 0浏览

    0关注

    305博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

3、栈和队列、应用举例

苍狼王unity学院 发布时间:2019-07-31 14:47:49 ,浏览量:0

栈和队列是非常重要的两种数据结构,在软件设计中应用很多。栈和队列也是线性结构,线性表、栈和队列这三种数据结构的数据元素以及数据元素间的逻辑关系完全相同,差别是线性表的操作不受限制,而栈和队列的操作受到限制。栈的操作只能在表的一端进行,队列的插入操作在表的一端进行而其它操作在表的另一端进行,所以,把栈和队列称为操作受限的线性表。

栈(Stack)是操作限定在表的尾端进行的线性表。表尾由于要进行插入、删除等操作,所以,它具有特殊的含义,把表尾称为栈顶( Top),另一端是固定的,叫栈底( Bottom)。当栈中没有数据元素时叫空栈(Empty Stack)。 栈通常记为: S= (a1,a2,…,an),S是英文单词stack的第 1 个字母。a1为栈底元素,an为栈顶元素。这n个数据元素按照a1,a2,…,an的顺序依次入栈,而出栈的次序相反,an第一个出栈,a1最后一个出栈。所以,栈的操作是按照后进先出(Last In First Out,简称LIFO)或先进后出(First In Last Out,简称FILO)的原则进行的,因此,栈又称为LIFO表或FILO表。栈的操作示意图如图

在这里插入图片描述 BCL中的栈 C#2.0 一下版本只提供了非泛型的Stack类(存储object类型)

C#2.0 提供了泛型的Stack类

重要的方法如下 1,Push()入栈(添加数据) 2,Pop()出栈(删除数据,返回被删除的数据) 3,Peek()取得栈顶的数据,不删除 4,Clear()清空所有数据

4,Count取得栈中数据的个数

栈的存储和代码实现-1.1,顺序栈 用一片连续的存储空间来存储栈中的数据元素(使用数组),这样的栈称为顺序栈(Sequence Stack)。类似于顺序表,用一维数组来存放顺序栈中的数据元素。栈顶指示器 top 设在数组下标为 0 的端, top 随着插入和删除而变化,当栈为空时,top=-1。下图是顺序栈的栈顶指示器 top 与栈中数据元素的关系图。 在这里插入图片描述

应用举例: class Program { static void Main(string[] args) { string str = Console.ReadLine(); Stack stack = new Stack(); Queue queue = new Queue(); for (int i = 0; i < str.Length; i++) { stack.Push(str[i]); queue.Enqueue(str[i]); } bool ishui = true; while (stack.Count>0) { if (stack.Pop()==queue.Dequeue()) { ishui = false; break; } } Console.WriteLine(“是否是回文字符串”+ishui); Console.ReadKey(); } }

关注
打赏
1665389160
查看更多评论
立即登录/注册

微信扫码登录

0.0384s