美文网首页
系列1-栈(stack)

系列1-栈(stack)

作者: 玻璃瓶外的水 | 来源:发表于2017-07-07 10:47 被阅读11次

    根据百度百科的定义:

    栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

    在swift中实现一个栈的数据结构其实很简单,这里利用数组来实现了一个栈的数据结构:



    /// 栈的实现public struct Stack{

    /// 使用数组实现栈

    fileprivate var array = [T]()

    /// 返回栈中元素数量

    public var count: Int {

    return array.count

    }

    /// 返回栈中的元素是否为空

    public var isEmpty: Bool {

    return array.isEmpty

    }

    ///  加入元素

    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 stackOfNames = Stack(array: ["Carl", "Lisa", "Stephanie", "Jeff", "Wade"])

    // 加入元素

    stackOfNames.push("Mike")

    // 打印元素

    print(stackOfNames.array)

    // 移除元素

    stackOfNames.pop()

    // 查看栈顶元素

    stackOfNames.top

    // 查看栈是否为空

    stackOfNames.isEmpty


    这里要感谢raywenderlich网站提供了这么好的资源

    相关文章

      网友评论

          本文标题:系列1-栈(stack)

          本文链接:https://www.haomeiwen.com/subject/esrlhxtx.html