トラック
/
Factor
Factor
/
演習
/
単純な連結リスト
単純な連結リスト

単純な連結リスト

中級

はじめに

音楽ストリーミングサービスを提供する会社で働いています。

音楽プレイヤーアプリにプレイリスト機能を作る仕事を任されました。

説明

音楽プレイヤーアプリケーションのプロトタイプを書いてみましょう。

プロトタイプでは、それぞれの曲を単純に数値で表します。数値の範囲(曲のID)が与えられたら、単方向連結リストを作成しましょう。

単方向連結リストが与えられたら、そのリストを逆順にして、曲を反対の順番で再生できるようにしましょう。

Note

連結リストはコンピューターサイエンスにおける基本的なデータ構造で、ほかのデータ構造を実装するときによく使われます。

もっとも単純な連結リストは、単方向連結リストです。つまり、各要素(「ノード」)はデータを持ち、さらにリスト内の次のノードを指すものを持ちます。

連結リストについてもっと深く知りたい場合は、こちらの記事で、わかりやすい図を使って説明されています。

ワード

linked-list-nodeタプルを定義します。

linked-listタプルを定義し、sequencesのM: linked-list lengthメソッドを用意して、テストがリストに対して直接lengthを呼び出せるようにします。

  • <linked-list> ( -- linked-list ):空のリストを構築します。
  • >linked-list ( seq -- linked-list ):seqの各要素を、順番に新しいリストへプッシュします。
  • linked-list>array ( linked-list -- array ):値を、リストの先頭から順に返します。
  • list-push ( linked-list value -- linked-list ):値を先頭にプッシュします。
  • list-pop ( linked-list -- linked-list value ):先頭の値を取り除いて返します。
  • list-peek ( linked-list -- value ):先頭の値を取り除かずに返します。
  • list-reverse ( linked-list -- linked-list ):要素を逆順に並べたリストを返します。

リストが空のときは、list-popとlist-peekからlist-emptyエラークラスを投げます。

GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Factor Exercism

単純な連結リストを始める準備はできましたか?

Exercismに登録すれば、47個のコンセプト163個の演習、そして本物の人間によるメンタリングとともに、Factorを学んでマスターできます。すべて無料です。