基于链表实现栈

2018-11-22  本文已影响0人  胡子先生丶

时间复杂度分析:压栈和弹栈的时间复杂度均为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;
            }
        }
    }
上一篇 下一篇

猜你喜欢

热点阅读