美文网首页
如何用数组来实现栈和队列

如何用数组来实现栈和队列

作者: 一个栗 | 来源:发表于2021-07-05 21:40 被阅读0次

Stack

  • 栈是一种后入先出的数据结构,仅限定在栈顶进行插入和删除操作。栈结构的实际应用主要有数制转换、括号匹配、表达式求值等。
Stack
struct Stack<T> {
    private var elements = [T]()
    
    var count:Int {
        return elements.count
    }
    
    var isEmpty:Bool {
        return elements.isEmpty
    }
    
    var peek:T? {
        return elements.last
    }
    
    mutating func push(_ element:T) {
        elements.append(element)
    }
    
    mutating func pop() -> T? {
        return elements.popLast()
    }
}

var stack = Stack<Int>()
stack.push(1)
stack.push(3)
stack.push(8)
print(stack.pop() ?? 0)
print(stack.count)

执行结果如下:
8
2

popLast() 可以作用在空数组上,当数组为空时,返回 nil

Queue

  • 队列在生活中非常常见,先进先出。
Queue
struct Queue<T> {
    private var elements:[T] = []
    
    var count:Int {
        return elements.count
    }
    
    var isEmpty:Bool {
        return elements.isEmpty
    }
    
    var peek:T? {
        return elements.first
    }
    
    mutating func enqueue(_ element:T) {
        elements.append(element)
    }
    
    mutating func dequeue() -> T? {
        return isEmpty ? nil : elements.removeFirst()
    }
}

var queue = Queue<Int>()
queue.enqueue(1)
queue.enqueue(3)
queue.enqueue(8)
print(queue.dequeue() ?? 0)
print(queue.count)

执行结果如下:
1
2

removeFirst() 不可以作用在空数组上,当数组为空时,会crash

相关文章

网友评论

      本文标题:如何用数组来实现栈和队列

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