zoukankan      html  css  js  c++  java
  • 2个栈实现队列功能


    type stack struct { nums []
    int }
    // type queue struct { s1
    *stack s2 *stack } //初始化栈 func newStack() *stack { return &stack{ nums: []int{}, } } //初始化队列 func newQueue() *queue { return &queue{ s1: newStack(), s2: newStack(), } } //栈的操作 func (s *stack) push(n int) { s.nums = append(s.nums, n) }
    //后进先出 func (s
    *stack) pop() int { if s.isEmpty() { return -1 } var res = s.nums[len(s.nums)-1] //取出最后一个 s.nums = s.nums[:len(s.nums)-1] return res } func (s *stack) isEmpty() bool { if len(s.nums) == 0 { return true } return false } //入队 数据放入s1中 func (q *queue) push(n int) { q.s1.push(n) } //出队 s2中栈顶值就是队列第一个值 func (q *queue) pop() int { if q.s2.isEmpty() { for !q.s1.isEmpty() { q.s2.push(q.s1.pop()) //把所有s1值取出,放入s2中 } } return q.s2.pop() } //返回队列中第一个值 func (q *queue) Get() int { if q.s2.isEmpty() { //检查s2是否空 if q.s1.isEmpty() { //检查s1是否空 return -1 //若s1、s2都空 } return q.s1.nums[0] //若s2空,s1不空 } return q.s2.nums[len(q.s2.nums)-1]//若s2不空 }
  • 相关阅读:
    Ajax基本用法
    浏览器兼容性问题
    对闭包的简单理解
    JSON
    Ajax知识
    对jsonp原理理解
    java Active Object模式(上)
    物联网传输协议MQTT
    谈谈如何在面试中发掘程序猿的核心竞争力
    响应式Web设计的9项基本原则
  • 原文地址:https://www.cnblogs.com/ashion89/p/13796635.html
Copyright © 2011-2022 走看看