您的位置:首页 > 编程语言 > C#

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# 算法 堆栈