C#数据结构篇(二)堆栈
作者: 寒羽狼 (Dark_Slaer_Tang)
烟快没有了,别人都说烟有害,但对与我可是必不可少的,呵呵。。,抽一根烟程序就写出来了,好了,再加把劲,我们再完成堆栈,其实堆栈和线性表没什么大的区别,堆栈其实是一种特殊的线性表,使用Push 压输入数据,Pop 弹出数据,才用,先进后出的原则,就这么简单。前面已经写好了List 类,在这里我们可以调用它。代码如下:
using System;
namespace List { /// <summary> /// 堆栈类 /// </summary> 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();
}
} }
使用先前的链表类,就可以轻松的完成堆栈类,除了基本的,Pop,Push 方法外,还提供,MoveBottom,MoveTop,MoveUp,MoveDown ,来访问堆栈中的数据,使用GetCurrentValue方法,来取得数据的值,可以执行更多的操作,呵呵,就这么简单。To Be Continue.

|