基于链表实现栈

时间复杂度分析:压栈和弹栈的时间复杂度均为O(1)级别,因为只需更改单个节点的索引即可。
空间复杂度分析:在入栈和出栈的过程中,只需要一两个临时变量存储空间,所以O(1)级别。我们说空间复杂度的时候,是指除了原本的数据存储空间外,算法运行还需要额外的存储空间。

 public class Stack<T>
    {
        private Node<T> top = null;

        public bool push(T item)
        {
            if (top == null)//判断栈是否为空
            {
                top = new Node<T>(item);
                return true;
            }
            else
            {
                Node<T> temp = new Node<T>(item);
                temp.Next = top;//将元素插入到栈顶位置
                top = temp;
                return true;
            }
        }

        /// <summary>
        /// 移除栈顶
        /// </summary>
        /// <returns></returns>
        public T pop()
        {
            if (top == null)
            {
                return default(T);
            }
            else {
                Node<T> temp = new Node<T>();
                top = top.Next;

                if (top == null)//需要判断是否为空
                {
                    return default(T);
                }

                return top.Data;
            }
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 栈:如何实现浏览器的前进和后退功能? 浏览器的前进、后退功能,我想你肯定很熟悉吧? 当你依次访问完一串页面 a-b...
    GhostintheCode阅读 4,388评论 0 2
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,125评论 2 89
  • 做为业务销售出身并在市场上打拼多年的人,无异对市场的变化很敏感的,也是时代感最强的人。 对于装饰行业从业多年的人,...
    斯理2018阅读 2,738评论 0 0
  • 今天工作比较忙,练习时间少。想起来时,赶紧腹式呼吸。哈哈
    行云流水longer阅读 1,365评论 0 0
  • 你说烟雨微茫心亦忧伤 我便投足雨上为你遮挡 你说寒风噬骨雪花飘扬 我便揽你入怀许你悠长 你说余晖已残夜笼乌江 我便...
    阮苜兮阅读 2,622评论 0 0