using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Ex08_1;

namespace Ex08_2
{
    public class CStack
    {
        private Clist m_List;    //创建链表对象实例

                       //构造函数
        public CStack()     
        {
             m_List = new Clist();

        }

                                  //压入堆栈
        public void Push(int PushValue)
        {
            m_List.Append(PushValue);   //参数： int PushValue 压入堆栈的数据

        }
                         // 弹出堆栈数据,如果为空，则取得 2147483647 为 int 的最大值；
        public int Pop()
        {
            //功能：弹出堆栈数据 
            int PopValue;

            if (!IsNullStack())
            {
                //不为空堆栈
                //移动到顶
                MoveTop();
                //取得弹出的数据
                PopValue = GetCurrentValue();
                //删除
                Delete();
                return PopValue;
            }
            //  空的时候为 int 类型的最大值
            return 2147483647;
        }

                                // 判断是否为空的堆栈
  
        public bool IsNullStack()
        {
            if (m_List.IsNull())
                return true;
            return false;
        }
      
                                       // 堆栈的个数

        public int StackListCount
        {
            get
            {
                return m_List.ListCount;
            }

        }

                               // 移动到堆栈的底部

        public void MoveBottom()
        {
            m_List.MoveFrist();
        }

                               // 移动到堆栈的Top

        public void MoveTop()
        {
            m_List.MoveLast();
        }
   
                                // 向上移动


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

                                 // 向下移动


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

                                      // 取得当前的值

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

                                // 删除取得当前的结点

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

                                    // 清空堆栈

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

    }
}
