栈Stack

代码

import UIKit

// 开发语言并没有提供内设的栈和队列,很多扩展类库都是使用泛型来实现栈或队列。采用数组来实现栈和队列等数据结构

// 首先定义一个指定名称的类,用来模拟一个栈。
// 栈是一种后进先出的线性结构,可以简单理解为一叠碗,哪只碗最后放上去的,下次使用时,它最先被抽出来

class Stack
{
    var stack : [AnyObject]
    
    init()
    {
        stack = [AnyObject]()
    }
    // 添加一个方法,用来判断堆栈是否为空
    func isEmpty() -> Bool
    {
        return stack.isEmpty
    }
    // 添加一个方法,用来获取堆栈的大小
    func size() -> Int
    {
        return stack.count
    }
    //  添加一个方法,用来往堆栈中添加一个新的元素,新的元素将被追加到数组的尾部
    func push(object:AnyObject)
    {
        stack.append(object)
    }
    // 添加一个方法,用来从堆栈中移除一个元素,并返回被移除的元素
    func pop() -> AnyObject?
    {
        if isEmpty()
        {
            return nil
        }
        else
        {
            return stack.removeLast()
        }
    }
}

// 创建一个堆栈实例
var stack = Stack()
stack.isEmpty()
stack.push(object:UIColor(red:1.0,green: 1.0,blue: 1.0,alpha: 1.0)) // 白色
stack.push(object:UIColor(red:1.0,green: 1.0,blue: 0.0,alpha: 1.0)) // 黄色
stack.pop()

截图

iShot20220410 下午1.20.50.png

队列Queue

代码

import UIKit

// 开发语言并没有提供内设的栈和队列,很多扩展类库都是使用泛型来实现栈或队列。采用数组来实现栈和队列等数据结构

// 定义一个指定名称的类,用来模拟一个队列。队列是一种先进先出的线性结构,可以简单理解为排队登机,先排队者先登机
class Queue
{
    var queue : [AnyObject]
    
    init()
    {
        queue = [AnyObject]()
    }

    func isEmpty() -> Bool
    {
        return queue.isEmpty
    }
    
    func size() -> Int
    {
        return queue.count
    }
    
    func joinQueue(object:AnyObject)
    {
        queue.append(object)
    }
    
    func deQueue() -> AnyObject?
    {
        if isEmpty()
        {
            return nil
        }
        else
        {
            return queue.removeFirst()
        }
    }
}

var queue = Queue()
queue.isEmpty()
queue.joinQueue(object:UIColor(red:1.0,green: 1.0,blue: 1.0,alpha: 1.0)) // 白色
queue.joinQueue(object:UIColor(red:1.0,green: 1.0,blue: 0.0,alpha: 1.0)) // 黄色
queue.deQueue()

截图

iShot20220410 下午1.30.58.png

Q.E.D.