コンピュータのデータ

データ構造における配列とリストの違いを学ぼう!

プログラムの勉強をしていると必ず出てくる「配列」。

便利な箱」が並んでいて、そこに数字や文字の値を入れていくイメージですが、配列の他に「リスト」というものもあります。

リストもデータを格納するのですが、データの出し入れの方法が配列とは違ってきます。

そこで、今回は配列とリストの使い方や違いを解説します!

データ構造

配列とリストの話の前に「データ構造」について理解しておきましょう。

数値や文字などのデータはプログラムの中で変数という入れ物の中に入れておくことで、様々な用途として使うことができます。

例えば、計算に使う数字や住所、ユーザー情報などを変数としてデータを格納しておきます。

この時、箱の中にどうやってデータを格納するかどうやって呼び出すか、が重要になってきます。

この「データを配置するための方法」をデータ構造と呼びます。

プログラムにおけるアルゴリズムの出来の良さは、プログラムの特性にあったデータ構造にしているかがキーになります。

このデータ構造の種類として、「配列」や「リスト」が存在していることを覚えておきましょう!

配列の仕組み

データ構造の一つとしての「配列」ですが、一言で言うと「データを連続して並べて管理する」というものです。

配列はデータが連続して並んでいるのでシンプルなデータ構造と言えるかと思います。

配列の特徴は以下の通りです。

配列の特徴

  • データの領域を予めメモリ上に確保固定サイズ)し、その中にデータを格納していく。概念的に理解し易い。
  • 配列の中の箱は添字で直接指定することで、データをダイレクトに取り出すことができる(メリット
  • データ領域が決まっているので、途中からデータの箱を挿入したり、削除したりが難しい(デメリット
配列の仕組み

2次元配列

上記の配列は一番シンプルな「一次元配列」と呼ばれていますが、「配列の中に配列」を作ることもできます。

配列の中に配列を作っていくと二次元、三次元と次元が増えていきます。これを「多次元配列」と呼びます。

以下に2次元配列の例を載せてますが、添字が増えていきますが、添字の組み合わせで直接データの箱の中身を呼び出すことができます。

2次元配列の仕組み

変数として複数の列を使いたい場合、二次元配列が活躍しますね。

リストの仕組み

続いて、もう一つのデータ構造の「リスト」です。

こちらも下の図を見て頂くと分かり易いかと思いますが、リストはデータとデータを数珠繋ぎにして管理します。

リストの扱うデータには、「ポインタ」と呼ばれる番号が付与されています。

この番号はメモリ上の位置をあらわす番号となっていて、次のデータのアドレスを指し示してくれています。

リストの特徴は以下のようになります。

リストの特徴

  • 状況に応じてデータを格納する箱の数を増減したり(可変サイズ)、順番を入れ替えることができる。柔軟性が高い。
  • データの追加、削除、変更に適している(メリット
  • 構造が複雑になるので効率が悪くなり、スピードも遅くなってしまう(デメリット
リストの仕組み

リストはポインタの持ち方によって、「単方向リスト、双方向リスト、循環リスト」という3種類あることも覚えておくと良いでしょう。

まとめ

今回はデータ構造における配列とリストの違いに関して解説してきました。

配列とリストのまとめ

  • 「データを配置するための方法」をデータ構造と呼ぶ
  • 配列は固定サイズのデータの出し入れに適している
  • リストは可変サイズのデータを追加、削除、変更に適している
  • 配列、リストどちらかが優れているわけではなく、アーキテクチャによって使い分けをするのが良い

配列もリストもプログラミングにおいて必要な要素となりますが、言語によってどっちをメインで使うかも変わってくるみたいで、Pythonなんかはリストを基本的に使う感じですね。

配列やリストのデータ構造を理解することで、よりコンピュータが身近になりますね。

以上です!

データ構造としてよく出てくる「キューとスタック」に関しても以下の記事に記載してますので、併せて読んでみてください。

-コンピュータのデータ