日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Golang數(shù)組如何實現(xiàn)stack和queue數(shù)據(jù)結構

這期內容當中小編將會給大家?guī)碛嘘PGolang數(shù)組如何實現(xiàn)stack和queue數(shù)據(jù)結構,文章內容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

網(wǎng)站設計制作、網(wǎng)站設計服務團隊是一支充滿著熱情的團隊,執(zhí)著、敏銳、追求更好,是創(chuàng)新互聯(lián)的標準與要求,同時竭誠為客戶提供服務是我們的理念。成都創(chuàng)新互聯(lián)公司把每個網(wǎng)站當做一個產品來開發(fā),精雕細琢,追求一名工匠心中的細致,我們更用心!

  • 棧是一系列對象的組成的集合,具有先進后出的原則。

棧是最簡單的數(shù)據(jù)結構也是最重要的數(shù)據(jù)結構,它的增刪查看都是在棧頂操作的,它具有以下屬性:

  1. s.push(e) : 將一個e元素添加到棧頂;

  2. s.pop(): 在stack中刪除棧頂元素并且返回;

  3. s.isEmpty(): 如果棧為空,返回true

  4. s.len(): 返回棧的長度

  5. s.top(): 返回棧頂數(shù)據(jù)

下面用數(shù)組實現(xiàn)棧:

package main
import (
  "errors"
  "fmt"
)

var (
  stackIsNil = errors.New("empty stack")
)

type stack []int
// Push 往stack頂部插入數(shù)據(jù)
func (s *stack) Push(e int) {
  *s = append(*s, e)
  return
}

// Pop 刪除stack頂部數(shù)據(jù)并且返回刪除的數(shù)據(jù)
func (s *stack) Pop() (ret int, err error) {
  if len(*s) == 0 {
     return 0, stackIsNil
  }

  temp := *s
  ret = temp[len(temp)-1]
  temp = temp[:len(temp)-1]
  *s = temp
  return
}

// IsEmpty 判斷是否為空
func (s *stack) IsEmpty() bool {
  return len(*s) == 0
}

// Top 獲取stack頂部數(shù)據(jù)
func (s *stack) Top() (int, error) {
  if len(*s) == 0 {
     return 0, stackIsNil
  }
  temp := *s
  return temp[len(temp)-1], nil
}

// Len 獲取stack長度
func (s *stack) Len() int {
  return len(*s)
}

func main() {
  s := new(stack)
  // 插入1
  s.Push(1)
  // 插入2
  s.Push(2)
  // 插入5
  s.Push(5)
  // 獲取長度
  fmt.Println(s.Len()) // 3
  // 獲取stack頂部數(shù)據(jù)
  fmt.Println(s.Top()) // 5
  // 刪除頂部數(shù)據(jù)
  fmt.Println(s.Pop()) // 5
  // 獲取長度
  fmt.Println(s.Len()) // 2
  // 判斷是否為空stack
  fmt.Println(s.IsEmpty())
}
  • 隊列也是一系列對象組成的集合,它具有先進先出的原則。

隊列的特點是訪問和刪除限制在隊列的第一個元素,插入被限制在隊列的尾部,隊列的屬性:

  1. q.enqueue(e): 向隊列尾部插入一個元素;

  2. q.dequeue(): 刪除并且返回第一個元素,如果隊列為空則報錯;

  3. q.first(): 不刪除元素,直接返回第一個元素,如果為空則報錯;

  4. q.isEmpty(): 隊列為空返回true;

  5. q.len(): 返回隊列長度。

  數(shù)組實現(xiàn)隊列代碼:

package main
import (
  "errors"
  "fmt"
)

var (
  ErrNilQueue = errors.New("queue is nil")
)

type queue []int
// Enqueue 隊列尾部插入數(shù)據(jù)
func (q *queue) Enqueue(e int) {
  *q = append(*q, e)
}

// Dequeue 隊列刪除第一個元素
func (q *queue) Dequeue() (ret int, err error) {
  if len(*q) == 0 {
     err = ErrNilQueue
     return
  }
  temp := *q
  ret = temp[0]
  temp = temp[1:]
  *q = temp
  return
}

// First 返回第一個數(shù)據(jù)
func (q *queue) First() (ret int, err error) {
  if len(*q) == 0 {
     err = ErrNilQueue
     return
  }
  temp := *q
  ret = temp[0]
  return
}

func (q *queue) IsEmpty() bool {
  return len(*q) == 0
}

func (q *queue) Len() int {
  return len(*q)
}

func main() {
  q := new(queue)
  q.Enqueue(1)
  q.Enqueue(10)
  q.Enqueue(20)
  fmt.Println(q.First())   // 1
  fmt.Println(q.Dequeue()) // 1
  fmt.Println(q.First())   // 10
  fmt.Println(q.IsEmpty()) // false
  fmt.Println(q.Len())     // 2
  fmt.Println(q.Dequeue()) //10
  fmt.Println(q.Len())     // 1
}

上述就是小編為大家分享的Golang數(shù)組如何實現(xiàn)stack和queue數(shù)據(jù)結構了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)頁標題:Golang數(shù)組如何實現(xiàn)stack和queue數(shù)據(jù)結構
本文來源:http://www.dlmjj.cn/article/ipscoi.html