[Swift] (자료구조) 큐 / Queue

2022. 8. 6. 16:07🐣/자료구조

import Foundation

class Queue<T> {
	var enQueue: [T] = []
	var deQueue: [T] = []

	var count: Int {
		return enQueue.count + deQueue.count
	}

	var isEmpty: Bool {
		return enQueue.isEmpty && deQueue.isEmpty
	}

	init() { }

	func push(_ element: T) {
		enQueue.append(element)
	}

	func pop() -> T {
		if deQueue.isEmpty {
			deQueue = enQueue.reversed()
			enQueue.removeAll()
		}
		return deQueue.popLast()!
	}
}

 

import Foundation

struct Queue<T> {
    var list = TwoPointerLinkedList<T>()
    
    init(_ elements: [T] = []) {
        for element in elements {
            list.add(node: Node(data: element))
        }
    }
    
    var count : Int {
        return list.count
    }
    var isEmpty : Bool {
        return list.head == nil
    }
    var front: T? {
        return list.front?.data
    }
    var back: T? {
        return list.back?.data
    }
    
    mutating func clear () {
        list.clear()
    }
    
    mutating func pop() -> T? {
        return list.removeFirst()?.data
    }
    
    mutating func push(_ element: T) {
        list.add(node: Node(data: element))
    }
}