1、术语解释
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。如下图:
主要特性:先入后出----每次仅操作栈顶元素。
2、程序实现
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 开发实例大全(提高卷),软件开发技术联盟。