堆栈是一种常用的数据结构,并且是线性表操作的子集,即操作受限的线性表。因此需要用到Clist 线性表类
1 public class CStack 2 { 3 private Clist m_List;//创建链表对象实例 4 //构造函数 5 public CStack() 6 { 7 m_List=new Clist(); 8 } 9 //压入堆栈 10 public void Push(int PushValue) 11 { 12 m_List.Append(PushValue);//参数:int PushValue 压入堆栈的数据 13 } 14 //弹出堆栈数据,如果为空,则取2147483647为int的最大值 15 public int Pop() 16 { 17 // 功能:弹出堆栈数据 18 int PopValue; 19 if (!IsNullStack()) 20 { 21 //不为空堆栈 22 //移动到顶 23 MoveTop(); 24 //取得弹出的数据 25 PopValue = GetCurrentValue(); 26 //删除 27 Delete(); 28 return PopValue; 29 } 30 //空的时候为int 类型的最大值 31 return 2147483647; 32 } 33 //判断是否为空的堆栈 34 public bool IsNullStack() 35 { 36 if (m_List.IsNull()) 37 { 38 return true; 39 } 40 return false; 41 } 42 //堆栈的个数 43 public int StackListCount 44 { 45 get { return m_List.ListCount; } 46 } 47 //移动到堆栈的底部 48 public void MoveBottom() 49 { 50 m_List.MoveFrist(); 51 } 52 //移动到堆栈的顶部 53 public void MoveTop() 54 { 55 m_List.MoveLast(); 56 } 57 //向上移动 58 public void MoveUp() 59 { 60 m_List.MoveNext(); 61 } 62 //向下移动 63 public void MoveDown() 64 { 65 m_List.MovePrevious(); 66 } 67 //取得当前的值 68 public int GetCurrentValue() 69 { 70 return m_List.GetCurrentValue(); 71 } 72 //删除取得当前的结点 73 public void Delete() 74 { 75 m_List.Delete(); 76 } 77 //清空堆栈 78 public void Clear() 79 { 80 m_List.Clear(); 81 } 82 }