C#数据结构篇(二 堆栈)

** C#数据结构篇(二) 堆栈 **

**** 作者: 寒羽狼 (Dark_Slaer_Tang)

烟快没有了,别人都说烟有害,但对与我可是必不可少的,呵呵。。,抽一根烟程序就写出来了,好了,再加把劲,我们再完成堆栈,其实堆栈和线性表没什么大的区别,堆栈其实是一种特殊的线性表,使用Push 压输入数据,Pop 弹出数据,才用,先进后出的原则,就这么简单。前面已经写好了List 类,在这里我们可以调用它。代码如下:

using System;

namespace List
{
///

1<summary>   
2/// 堆栈类   
3/// </summary>

public class CStack
{

//调用链表类
private Clist m_List;

public CStack()
{

//构造函数

m_List=new Clist();

}

///

1<summary>   
2/// 压入堆栈   
3/// </summary>

public void Push(int PushValue)
{
//参数: int PushValue 压入堆栈的数据

m_List.Append (PushValue);

}

///

1<summary>   
2/// 弹出堆栈数据,如果为空,则取得 2147483647 为 int 的最大值;   
3/// </summary>

public int Pop()
{
//功能:弹出堆栈数据

int PopValue;

if (!IsNullStack())
{

//不为空堆栈

//移动到顶

MoveTop();

//取得弹出的数据
PopValue=GetCurrentValue();

//删除

Delete();
return PopValue;

}

// 空的时候为 int 类型的最大值

return 2147483647;
}

///

1<summary>   
2/// 判断是否为空的堆栈   
3/// </summary>

public bool IsNullStack()
{

if ( m_List.IsNull() )
return true ;

return false ;
}

///

1<summary>   
2/// 堆栈的个数   
3/// </summary>

public int StackListCount
{

get
{
return m_List.ListCount ;
}

}

///

1<summary>   
2/// 移动到堆栈的底部   
3/// </summary>

public void MoveBottom()
{

m_List.MoveFrist ();
}

///

1<summary>   
2/// 移动到堆栈的Top   
3/// </summary>

public void MoveTop()
{
m_List.MoveLast ();
}

///

1<summary>   
2/// 向上移动   
3/// </summary>

public void MoveUp()
{
m_List.MoveNext();
}

///

1<summary>   
2/// 向上移动   
3/// </summary>

public void MoveDown()
{
m_List.MovePrevious() ;
}

///

1<summary>   
2/// 取得当前的值   
3/// </summary>

public int GetCurrentValue()
{
return m_List.GetCurrentValue ();
}

///

1<summary>   
2/// 删除取得当前的结点   
3/// </summary>

public void Delete()
{
m_List.Delete ();
}

///

1<summary>   
2/// 清空堆栈   
3/// </summary>

public void Clear()

{

m_List.Clear();

}

}
}

使用先前的链表类,就可以轻松的完成堆栈类,除了基本的,Pop,Push 方法外,还提供,MoveBottom,MoveTop,MoveUp,MoveDown ,来访问堆栈中的数据,使用GetCurrentValue方法,来取得数据的值,可以执行更多的操作,呵呵,就这么简单。To Be Continue.

Published At
Categories with Web编程
Tagged with
comments powered by Disqus