堆栈和队列的实现

堆栈:

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();

        }

    }

}

队列:

namespace Alignment

{

    /// <summary>

    /// 队列类

    /// </summary>



    public class CQueue

    {

        private Clist m_List;



        public CQueue()

        {

            //构造函数



            //这里使用到前面编写的List 

            m_List = new Clist();



        }

        /// <summary>

        /// 入队

        /// </summary>

        public void EnQueue(int DataValue)

        {

            //功能:加入队列,这里使用List 类的Append 方法:



            //尾部添加数据,数据个数加1



            m_List.Append(DataValue);

        }



        /// <summary>

        /// 出队

        /// </summary>



        public int DeQueue()

        {

            //功  能:出队



            //返回值: 2147483647 表示为空队列无返回



            int QueValue;



            if (!IsNull())

            {

                //不为空的队列



                //移动到队列的头



                m_List.MoveFrist();



                //取得当前的值



                QueValue = m_List.GetCurrentValue();



                //删除出队的数据



                m_List.Delete();



                return QueValue;



            }

            return 2147483647;

        }



        /// <summary>

        /// 判断队列是否为空

        /// </summary>



        public bool IsNull()

        {

            //功能:判断是否为空的队列



            return m_List.IsNull();



        }



        /// <summary>

        /// 清空队列

        /// </summary>



        public void Clear()

        {

            //清空链表

            m_List.Clear();

        }

        /// <summary>

        /// 取得队列的数据个数

        /// </summary>

        public int QueueCount

        {

            get

            {

                //取得队列的个数

                return m_List.ListCount;

            }

        }

    }

}

 

你可能感兴趣的:(队列)