golang スタックの実装

王林
リリース: 2023-05-21 15:10:07
オリジナル
413 人が閲覧しました

Golang は比較的新しいプログラミング言語であり、その効率性と同時実行性により、ますます人気が高まっているプログラミング言語です。 Golang には、さまざまなデータ構造とアルゴリズムを含む強力な標準ライブラリがあり、その 1 つがスタックです。

スタックは、プログラム内でデータを保存および操作するために使用できるデータ構造です。これはプレートの積み重ねに似ており、上部にプレートを追加したり、上部からプレートを削除したりできます。このデータ構造は通常、「後入れ先出し (LIFO)」原則に従います。つまり、スタックに最後に追加した要素が最初にポップされます。

Golang では、Slice を使用してスタックを実装できます。次に、Golang で基本的なスタックを実装する方法を示します。

まず、以下に示すようにスタック構造を宣言する必要があります。

type Stack struct {
    items []int //用于存储栈中的元素
}
ログイン後にコピー

その中で、項目はスタックに要素を格納するために使用するスライスです。このスライスを使用して、スタック上にさまざまな操作を実装できます。

次に、以下に示すように、要素をスタックに追加するメソッド (プッシュ) を実装する必要があります。

func (s *Stack) Push(item int) {
    s.items = append(s.items, item) //将元素添加到切片的末尾
}
ログイン後にコピー

関数では、組み込みの append 関数を使用して、受信要素をスライスの最後まで追加します。

次に、以下に示すように、スタックから要素を削除するメソッド (Pop) を実装する必要があります。

func (s *Stack) Pop() int {
    length := len(s.items) - 1    //获取栈中元素数量
    lastItem := s.items[length]   //获取栈顶元素
    s.items = s.items[:length]    //从切片中删除栈顶元素
    return lastItem                //返回栈顶元素
}
ログイン後にコピー

関数では、最初にスライス内の最後の要素 (つまり、スタックのトップ要素)、スライスの Slicing プロパティを使用して、その要素をスライスから削除します。最後に、スタックの最上位要素を呼び出し側に返します。

次に、以下に示すように、スタックの最上位要素を取得するメソッド (Peek) を実装する必要があります。

func (s *Stack) Peek() int {
    return s.items[len(s.items)-1]   //返回栈顶元素
}
ログイン後にコピー

関数では、len(s.items)- を使用します。スタックを取得するには 1 スライス内の最後の要素の添字は常に len(s.items)-1 であるため、最上位要素の添字。

最後に、以下に示すように、スタックが空かどうかを確認するメソッド (IsEmpty) を実装する必要があります。

func (s *Stack) IsEmpty() bool {
    return len(s.items) == 0    //判断栈中是否有元素
}
ログイン後にコピー

関数では、len(s.items) を使用して確認します。スタック内の項目 要素の数。スタックに要素がない場合は true を返し、それ以外の場合は false を返します。

これで、基本的な Golang スタックの実装が完了しました。次のサンプル コードでは、Golang の main 関数を使用してスタックの機能をテストします。

func main() {
    myStack := Stack{}    //初始化一个栈
    
    myStack.Push(23)     //向栈中添加元素
    myStack.Push(45)
    myStack.Push(67)
    
    fmt.Println("栈顶元素为:", myStack.Peek())     //获取栈顶元素
    
    fmt.Println("弹出:", myStack.Pop())      //从栈中弹出元素
    fmt.Println("栈是否为空?", myStack.IsEmpty())    //检查栈是否为空

}
ログイン後にコピー

このコードでは、まずスタックを初期化し、次に 3 つの要素 (23、45、および 67) を追加します。次に、Peek メソッドを使用してスタックの最上位の要素を取得し、Pop メソッドを使用してスタックから要素をポップします。最後に、IsEmpty メソッドを使用して、スタックが空かどうかを確認します。

プログラムを実行すると、出力は次のようになります:

栈顶元素为: 67
弹出: 67
栈是否为空? false
ログイン後にコピー

概要

この記事では、Golang でスタックを実装する方法を紹介しました。スタック構造を定義する方法と、Push、Pop、Peek、および IsEmpty メソッドを実装する方法を説明しました。このシンプルなスタック実装は、Golang プログラムでデータを保存および操作し、スタック データ構造がどのように機能するかをより深く理解するのに役立ちます。

以上がgolang スタックの実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!