zoukankan      html  css  js  c++  java
  • Swift实现栈

    栈是一种后进先出(LIFO)的数据结构,功能同数组很像。可以在栈的顶端压入一个对象,也可以弹出一个对象,并且不需要出栈就可以查看栈顶的对象。

    每次当调用一个函数方法时,CPU将返回地址放入堆栈中,当调用结束,CPU通过返回地址跳转到调用方。所以当我们使用递归函数(非常大的时候),程序会崩溃,告知栈溢出(stack overflow)。当然我们可以通过优化递归算法(尾递归)来解决这一问题。这个后续有机会再讲。

    
    public struct Stack<T> {
        fileprivate var array = [T]()
        
        public var isEmpty: Bool {
            return array.isEmpty
        }
        
        public var count: Int {
            return array.count
        }
        
        public mutating func push(_ element: T) {
            array.append(element)
        }
        
        public mutating func pop() -> T? {
            return array.popLast()
        }
        
        public var top: T? {
            return array.last
        }
    }
    
    

    使用

    
    //新建一个栈
    var stackOfAnimals = Stack(array: ["lion", "elephant", "giraffe"])
    
    //压栈
    stackOfAnimals.push("zebra")
    
    //结果是:["lion", "elephant", "giraffe", "zebra"]
    print(stackOfAnimals.array)
    
    //出栈
    stackOfAnimals.pop()
    
    //栈顶的元素是:"giraffe"
    stackOfAnimals.top
    
    //false
    stackOfAnimals.isEmpty
    
    
  • 相关阅读:
    Django contenttypes组件
    Django admin组件使用
    Django 信号
    Django 中间件
    Django 分页组件替换自定义分页
    Django ORM操作补充
    Django ORM 操作2 增删改
    Django 序列化
    JavaScript
    CSS 属性
  • 原文地址:https://www.cnblogs.com/horo/p/6622573.html
Copyright © 2011-2022 走看看