首頁  >  文章  >  後端開發  >  重新學習 CS 基礎 - 實作堆疊

重新學習 CS 基礎 - 實作堆疊

Susan Sarandon
Susan Sarandon原創
2024-10-14 06:17:02448瀏覽

Relearning Basics of CS - Implementing Stack

我一直在嘗試學習新的程式語言,還有什麼比從基礎開始更好的方法呢。在這一系列的文章中,我將嘗試使用 Go 實作一個簡單的資料結構和演算法。 

在 CLRS 的演算法簡介一書中的基本資料結構章節中,討論的第一個資料結構是堆疊。

什麼是堆疊

堆疊是一種簡單的資料結構,用於儲存一組項目。堆疊的屬性是它允許我們將項目新增到堆疊頂部並從堆疊中刪除,因此它遵循後進先出原則或 LIFO。

插入操作稱為Push,刪除操作稱為Pop。由於我們不想彈出空堆疊並處理記憶體錯誤,因此我們也實作了對堆疊是否為空的檢查。相當簡單的資料結構。

下面你可以找到golang中堆疊的實作。使用堆疊的時間複雜度為 O(N),空間複雜度為 O(1)

package main

import "fmt"

type Stack []int

func (stack *Stack) Push (value int){
    *stack = append(*stack, value)
}

func (stack *Stack) Pop () int{
    if stack.IsEmpty() {
        return 0
    }
    top := (*stack)[len(*stack)-1]
    *stack = (*stack)[:len(*stack)-1]
    return top
}

func (stack *Stack) IsEmpty() bool{
    return len(*stack) == 0
}


func main(){
    st := Stack{}
    st.Push(1)
    st.Push(2)
    fmt.Println(st.Pop())
}

以上是重新學習 CS 基礎 - 實作堆疊的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn