zoukankan      html  css  js  c++  java
  • 堆栈和队列的实现

    堆栈:

    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;
                }
            }
        }
    }
  • 相关阅读:
    acdream.18.KIDx's Triangle(数学推导)
    upc.2219: A^X mod P(打表 && 超越快速幂(in some ways))
    山东省第四届acm.Rescue The Princess(数学推导)
    BC.5200.Trees(dp)
    BC.36.Gunner(hash)
    hdu.5195.DZY Loves Topological Sorting(topo排序 && 贪心)
    数组倒置算法扩展
    C# 传值和传引用 ( ref out in )
    C# 输出文件夹下的所有文件
    控制反转(自译)
  • 原文地址:https://www.cnblogs.com/xuekai-to-sharp/p/3556198.html
Copyright © 2011-2022 走看看