ホームページ >バックエンド開発 >Golang >CSの基礎を学び直す - スタックの実装

CSの基礎を学び直す - スタックの実装

Susan Sarandon
Susan Sarandonオリジナル
2024-10-14 06:17:02590ブラウズ

Relearning Basics of CS - Implementing Stack

私は新しいプログラミング言語を学ぼうとしていますが、基礎から始めるより良い方法はないでしょうか。今後のこの一連の投稿では、Go を使用して単純なデータ構造とアルゴリズムを実装してみます。 

書籍『CLRS によるアルゴリズム入門』の基本データ構造の章で説明されている最初のデータ構造はスタックです。

スタックとは

スタックは、アイテムのセットを保存するために使用される単純なデータ構造です。スタックの特性は、項目をスタックの先頭に追加したり、スタックから削除したりできるため、後入れ先出しの原則 (LIFO) に従うことです。

挿入操作はプッシュと呼ばれ、削除操作はポップと呼ばれます。空のスタックをポップしてメモリエラーに対処したくないため、スタックが空かどうかのチェックも実装します。かなりシンプルなデータ構造。

以下に、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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。