Swift算法之棧和隊列的實現(xiàn)方法示例
一、概述
棧和隊列在數(shù)據(jù)結(jié)構(gòu)中是比較重要的一個數(shù)據(jù)結(jié)構(gòu)。
其實對于棧和隊列并不需要太深入的介紹,棧和隊列的核心內(nèi)容是棧是先進后出、隊列是先進先出。在實際開發(fā)中有些場景也可能會用到,比如 APP 中用戶可以撤銷操作,比如下棋 APP 中的悔棋操作,返回上一步就是先進后出(后進先出),也就是棧的特性。
比如在售票 APP 中,為先下訂單的用戶先出票,就需要用到隊列。當然這兩個只是在簡單場景下的情況,實際開發(fā)中情況可能更復(fù)雜,比如售票 APP 為會員用戶優(yōu)先出票等。

接下來就通過 Swift 去實現(xiàn)棧和隊列。
二、實現(xiàn)思路及代碼
直接上代碼:
//棧
class Stack {
var stack: [AnyObject]
init() {
stack = [AnyObject]()
}
func push(object: AnyObject) {
stack.append(object)
}
func pop() -> AnyObject? {
if !isEmpty() {
return stack.removeLast()
} else {
return nil
}
}
func isEmpty() -> Bool {
return stack.isEmpty
}
func peek() -> AnyObject? {
return stack.last
}
func size() -> Int {
return stack.count
}
}
//隊列
class Queue {
var queue: [AnyObject]
init() {
queue = [AnyObject]()
}
func enqueue(object: AnyObject) {
queue.append(object)
}
func dequeue() -> AnyObject? {
if !isEmpty() {
return queue.removeFirst()
} else {
return nil
}
}
func isEmpty() -> Bool {
return queue.isEmpty
}
func peek() -> AnyObject? {
return queue.first
}
func size() -> Int {
return queue.count
}
}
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者使用swift能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
深入理解Swift中單例模式的替換及Swift 3.0單例模式的實現(xiàn)
這篇文章主要給大家介紹了關(guān)于Swift中單例模式替換的相關(guān)資料,然后又跟大家分享了關(guān)于Swift3.0 單例模式實現(xiàn)的幾種方法-Dispatch_Once的內(nèi)容,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。2017-11-11
RxSwift學(xué)習(xí)教程之類型對象Subject詳解
這篇文章主要給大家介紹了關(guān)于RxSwift學(xué)習(xí)教程之類型對象Subject的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起看看吧。2017-09-09
Swift學(xué)習(xí)教程之SQLite的基礎(chǔ)使用
這篇文章主要給大家介紹了關(guān)于Swift學(xué)習(xí)教程之SQLite的基礎(chǔ)使用,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Swift SQLite具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04

