栈
2016-07-04 23:59
405 查看
1、术语解释
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。如下图:主要特性:先入后出----每次仅操作栈顶元素。
2、程序实现
备注:程序引用了前面双链表类(Clist)using System; using System.Collections.Generic; using System.Linq; using System.Text; using UnilateralismChainTable; namespace StackApply { public class CStack { //调用链表类 private Clist m_List; public CStack() { //构造函数 m_List = new Clist(); } /// <summary> /// 压入堆栈 /// </summary> public void Push(int PushValue) { //参数: int PushValue 压入堆栈的数据 m_List.Append(PushValue); } /// <summary> /// 弹出堆栈数据,如果为空,则取得 2147483647 为 int 的最大值; /// </summary> public int Pop() { //功能:弹出堆栈数据 int PopValue; if (!IsNullStack()) { //不为空堆栈 //移动到顶 MoveTop(); //取得弹出的数据 PopValue = GetCurrentValue(); //删除 Delete(); return PopValue; } // 空的时候为 int 类型的最大值 return 2147483647; } /// <summary> /// 判断是否为空的堆栈 /// </summary> public bool IsNullStack() { if (m_List.IsNull()) return true; return false; } /// <summary> /// 堆栈的个数 /// </summary> public int StackListCount { get { return m_List.ListCount; } } /// <summary> /// 移动到堆栈的底部 /// </summary> public void MoveBottom() { m_List.MoveFrist(); } /// <summary> /// 移动到堆栈的Top /// </summary> public void MoveTop() { m_List.MoveLast(); } /// <summary> /// 向上移动 /// </summary> public void MoveUp() { m_List.MoveNext(); } /// <summary> /// 向上移动 /// </summary> public void MoveDown() { m_List.MovePrevious(); } /// <summary> /// 取得当前的值 /// </summary> public int GetCurrentValue() { return m_List.GetCurrentValue(); } /// <summary> /// 删除取得当前的结点 /// </summary> public void Delete() { m_List.Delete(); } /// <summary> /// 清空堆栈 /// </summary> public void Clear() { m_List.Clear(); } } }
备注:以上整理自asp.net 开发实例大全(提高卷),软件开发技术联盟。
相关文章推荐
- C语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)
- c#调用COM组件
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- C#实现把指定数据写入串口
- C#动态创建button的方法
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#实现给图片加水印的方法
- C#使用加边法计算行列式的值
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#中的delegate委托类型基本学习教程
- C#实现子窗体与父窗体通信方法实例总结
- C#通用邮件发送类分享
- 举例讲解C#中自动实现的属性
- C#中this的用法集锦
- C#数据结构之顺序表(SeqList)实例详解
- C#.NET获取拨号连接的宽带连接方法
- C#异步绑定数据实现方法