Swift-数组实现三个栈

题目: 数组实现栈可以弹性的分割也可以平均均分,按照平均分配的原则实现三个栈.

核心代码:
<pre><code>` let stackSize:Int = 10

var buffer:[Int?] = [Int?].init(repeating: nil, count: 30)
var stackPointer:[Int] = [-1, -1, -1]

func push(stackNum:Int,value:Int) {
    
    if stackNum < 0 || stackNum >= stackPointer.count  {
        return
    }
    
    if stackPointer[stackNum] + 1 >= stackSize {
        return
    }
    
    stackPointer[stackNum] += 1
    buffer[absTopOfStack(stackNum: stackNum)] = value
}

func pop(stackNum:Int) -> Int? {
    if stackNum < 0 || stackNum >= stackPointer.count  {
        return nil
    }
    
    if stackPointer[stackNum] == -1 {
        return nil
    }
    
    let index:Int = absTopOfStack(stackNum: stackNum)
    
    let value:Int? = buffer[index]
    buffer[index] = nil
    stackPointer[stackNum] -= 1
    
    return value
}


func absTopOfStack(stackNum:Int) -> Int {
    return stackNum * stackSize + stackPointer[stackNum]
}`</code></pre>

测试代码:
<pre><code>`var myStack:Stack = Stack()
for i in 10..<25 {
myStack.push(stackNum: 0, value: i)
}

for i in 30..<36 {
myStack.push(stackNum: 1, value: i)
}

for i in 40..<48 {
myStack.push(stackNum: 2, value: i)
}

for i in 0..<3 {
for j in 0..<10 {
var value:Int? = myStack.pop(stackNum: i)
if value != nil {
print("FlyElephant---栈号(i)---(j)---值:(String(describing: value!))")
}
}
}`</code></pre>

FlyElephant.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,204评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,904评论 18 139
  • 我从来都无法得知,人们是究竟为什么会爱上另一个人。我猜也许我们的心上都有一个缺口,它是个空洞,呼呼的往灵魂里灌着刺...
    检小月成长记阅读 1,139评论 8 8
  • 公交车站,两个带着鸟笼的老人上了公交车,鸟笼很别致,里面装着一只小鸟,我只知道它是一只鸟,至于叫什么雀抑或什么鸟...
    岳凡阅读 577评论 0 0
  • 婚礼上只有司仪独自撑场面是觉得不够的,婚礼中的游戏也是现在婚礼必不可缺的。 1.婚礼奥斯卡 新人事先拟好“获奖名单...
    阳光泡沫helly阅读 394评论 0 2