Swift算法之棧和隊(duì)列的實(shí)現(xiàn)方法示例
一、概述
棧和隊(duì)列在數(shù)據(jù)結(jié)構(gòu)中是比較重要的一個(gè)數(shù)據(jù)結(jié)構(gòu)。
其實(shí)對(duì)于棧和隊(duì)列并不需要太深入的介紹,棧和隊(duì)列的核心內(nèi)容是棧是先進(jìn)后出、隊(duì)列是先進(jìn)先出。在實(shí)際開發(fā)中有些場(chǎng)景也可能會(huì)用到,比如 APP 中用戶可以撤銷操作,比如下棋 APP 中的悔棋操作,返回上一步就是先進(jìn)后出(后進(jìn)先出),也就是棧的特性。
比如在售票 APP 中,為先下訂單的用戶先出票,就需要用到隊(duì)列。當(dāng)然這兩個(gè)只是在簡(jiǎn)單場(chǎng)景下的情況,實(shí)際開發(fā)中情況可能更復(fù)雜,比如售票 APP 為會(huì)員用戶優(yōu)先出票等。
接下來(lái)就通過(guò) Swift 去實(shí)現(xiàn)棧和隊(duì)列。
二、實(shí)現(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 } } //隊(duì)列 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é)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者使用swift能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Swift 4中一些實(shí)用的數(shù)組技巧小結(jié)
這篇文章主要給大家分享了關(guān)于Swift 4中一些實(shí)用的數(shù)組技巧,文中通過(guò)示例代碼介紹的介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用swift具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03深入理解Swift中單例模式的替換及Swift 3.0單例模式的實(shí)現(xiàn)
這篇文章主要給大家介紹了關(guān)于Swift中單例模式替換的相關(guān)資料,然后又跟大家分享了關(guān)于Swift3.0 單例模式實(shí)現(xiàn)的幾種方法-Dispatch_Once的內(nèi)容,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-11-11RxSwift學(xué)習(xí)教程之類型對(duì)象Subject詳解
這篇文章主要給大家介紹了關(guān)于RxSwift學(xué)習(xí)教程之類型對(duì)象Subject的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起看看吧。2017-09-09Swift學(xué)習(xí)教程之SQLite的基礎(chǔ)使用
這篇文章主要給大家介紹了關(guān)于Swift學(xué)習(xí)教程之SQLite的基礎(chǔ)使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Swift SQLite具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Swift中動(dòng)態(tài)調(diào)用實(shí)例方法介紹
這篇文章主要介紹了Swift中動(dòng)態(tài)調(diào)用實(shí)例方法介紹,在Swift中有一類很有意思的寫法,可以讓我們不直接使用實(shí)例來(lái)調(diào)用這個(gè)實(shí)例上的方法,而是通過(guò)類型取出這個(gè)類型的某個(gè)實(shí)例方法的簽名,然后再通過(guò)傳遞實(shí)例來(lái)拿到實(shí)際需要調(diào)用的方法,需要的朋友可以參考下2015-01-01