復習 - 連結リストの構築
CoddyのGOジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 24/107。
チャレンジ
簡単ゼロから連結リストを構築してみましょう!各ノードが次のノードを指し、メモリ内で接続された値のチェーンを形成するデータ構造を作成します。
コードは2つのファイルに分けて構成します:
linkedlist.go:Value(int) とNext(*Node) フィールドを持つNode構造体を定義します。Headノードへのポインタを保持するLinkedList構造体を作成します。*LinkedListに以下のメソッドを実装してください:Append- 指定された値を持つ新しいノードをリストの最後に追加しますPrepend- 指定された値を持つ新しいノードをリストの最初に追加しますPrint- リストをトラバースし、すべての値を->で区切って表示し、最後にnilを付けて出力します
main.go: 入力から値を読み取り、ノードを append および prepend して連結リストを構築し、最終的なリスト構造を出力します。
以下の入力が提供されます:
- 1行目: append する最初の値
- 2行目: append する2番目の値
- 3行目: prepend する値
Print メソッドは、以下の形式でリストを出力する必要があります:
[value1] -> [value2] -> [value3] -> nil例えば、10、20、5 が与えられた場合、出力は以下のようになります:
5 -> 10 -> 20 -> nilAppend メソッドは、新しいノードを追加する前に、リストの末尾(Next が nil の場所)までトラバースする必要があります。Prepend メソッドは、新しいノードを作成し、その Next を現在の head に向け、その後 head を新しいノードに更新する必要があります。空のリストは head が nil であることに注意し、Append メソッドでそのケースを処理してください。
自分で試してみよう
package main
import "fmt"
func main() {
// 入力値を読み込む
var val1, val2, val3 int
fmt.Scanln(&val1)
fmt.Scanln(&val2)
fmt.Scanln(&val3)
// 新しい連結リストを作成する
list := &LinkedList{}
// TODO: Appendを使用してval1とval2をリストに追加する
// TODO: Prependを使用してval3をリストの先頭に追加する
// TODO: 最終的なリスト構造を出力する
}
オブジェクト指向プログラミングのすべてのレッスン
1Go オブジェクト指向の基礎
外部ファイルGo ワークスペースとモジュールパッケージとインポート公開された名前と非公開の名前Go におけるオブジェクト指向入門クラスとしての構造体構造体へのメソッド定義ポインタレシーバと値レシーバ構造体の初期化コンストラクタ関数まとめ:簡易計算機8エラー処理とOOP
error インターフェースカスタムエラー型エラーラッピング (fmt.Errorf)センチネルエラーerrors.Is() と errors.As()Panic、Defer、Recover復習 - ファイルパーサー