最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Swift算法之棧和隊(duì)列的實(shí)現(xiàn)方法示例

 更新時(shí)間:2017年03月31日 10:42:38   作者:李峰峰  
Swift語言中沒有內(nèi)設(shè)的棧和隊(duì)列,很多擴(kuò)展庫中使用Generic Type來實(shí)現(xiàn)棧或是隊(duì)列。下面這篇文章就來給大家詳細(xì)介紹了Swift算法之棧和隊(duì)列的實(shí)現(xiàn)方法,需要的朋友可以參考學(xué)習(xí),下面來一起看看吧。

一、概述

棧和隊(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ā)中有些場景也可能會(huì)用到,比如 APP 中用戶可以撤銷操作,比如下棋 APP 中的悔棋操作,返回上一步就是先進(jìn)后出(后進(jìn)先出),也就是棧的特性。

比如在售票 APP 中,為先下訂單的用戶先出票,就需要用到隊(duì)列。當(dāng)然這兩個(gè)只是在簡單場景下的情況,實(shí)際開發(fā)中情況可能更復(fù)雜,比如售票 APP 為會(huì)員用戶優(yōu)先出票等。

接下來就通過 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é)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者使用swift能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 判斷?ScrollView List?是否正在滾動(dòng)詳解

    判斷?ScrollView List?是否正在滾動(dòng)詳解

    這篇文章主要為大家介紹了判斷?ScrollView、List?是否正在滾動(dòng)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Swift在什么情況會(huì)發(fā)生內(nèi)存訪問沖突詳解

    Swift在什么情況會(huì)發(fā)生內(nèi)存訪問沖突詳解

    這篇文章主要給大家介紹了關(guān)于Swift在什么情況會(huì)發(fā)生內(nèi)存訪問沖突的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Swift縮放并填充圖片功能的實(shí)現(xiàn)

    Swift縮放并填充圖片功能的實(shí)現(xiàn)

    最近有一個(gè)需求,就是將圖片先等比例縮放到指定大小,然后將空余出來空間填充為黑色,返回指定大小的圖片。本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-11-11
  • Swift?中的?RegexBuilder學(xué)習(xí)指南

    Swift?中的?RegexBuilder學(xué)習(xí)指南

    這篇文章主要為大家介紹了Swift中的RegexBuilder學(xué)習(xí)指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Swift 數(shù)組及常用方法詳解總結(jié)

    Swift 數(shù)組及常用方法詳解總結(jié)

    數(shù)組(Array)是有序的元素序列。 若將有限個(gè)類型相同的變量的集合命名,那么這個(gè)名稱為數(shù)組名。組成數(shù)組的各個(gè)變量稱為數(shù)組的分量,也稱為數(shù)組的元素,有時(shí)也稱為下標(biāo)變量
    2021-11-11
  • 深入解析Swift代理模式

    深入解析Swift代理模式

    委托(代理)是一種設(shè)計(jì)模式,它允許類或結(jié)構(gòu)體將一些需要它們負(fù)責(zé)的功能交由(委托)給其他的類型。下面這篇文章主要介紹了Swift代理模式的相關(guān)資料,文章開始先介紹了Objective-C相關(guān)的內(nèi)容,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • Swift網(wǎng)絡(luò)請(qǐng)求庫Alamofire使用詳解

    Swift網(wǎng)絡(luò)請(qǐng)求庫Alamofire使用詳解

    這篇文章主要為大家詳細(xì)介紹了Swift網(wǎng)絡(luò)請(qǐng)求庫Alamofire的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Swift 3.0基礎(chǔ)學(xué)習(xí)之枚舉類型

    Swift 3.0基礎(chǔ)學(xué)習(xí)之枚舉類型

    枚舉在編程中很多時(shí)候要用到,在 Swift 中,枚舉具有更多的特性。下面這篇文章主要介紹了Swift 3.0基礎(chǔ)學(xué)習(xí)之枚舉類型的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • Swift調(diào)用Objective-C編寫的API實(shí)例

    Swift調(diào)用Objective-C編寫的API實(shí)例

    這篇文章主要介紹了Swift調(diào)用Objective-C編寫的API實(shí)例,介紹的比較全面和詳細(xì),對(duì)Objective-C代碼的重復(fù)利用有極大好處,的朋友可以參考下
    2014-07-07
  • Swift語言中的一些訪問控制設(shè)置詳解

    Swift語言中的一些訪問控制設(shè)置詳解

    這篇文章主要介紹了Swift語言中的一些訪問控制設(shè)置詳解,是Swift入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-11

最新評(píng)論

浮山县| 长寿区| 隆尧县| 舞阳县| 玉树县| 惠州市| 泽州县| 长岭县| 金阳县| 万州区| 安陆市| 大余县| 维西| 武邑县| 华亭县| 云浮市| 新沂市| 尉犁县| 仁怀市| 蓬溪县| 青田县| 元江| 广东省| 凉城县| 福贡县| 上饶市| 汉中市| 望奎县| 萨嘎县| 靖江市| 兴海县| 濮阳县| 丹江口市| 阳城县| 怀集县| 武邑县| 福清市| 柳州市| 克拉玛依市| 响水县| 东平县|