C#数据结构篇(二 堆栈) killertang(原作)
2024-07-21 02:22:15
供稿:网友
本文来源于网页设计爱好者web开发社区http://www.html.org.cn收集整理,欢迎访问。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.