FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
line

リスト構造(チェーンリスト)(単方向リスト)

プログラム全文はこちら


リスト構造、ある意味必要とされる技術ですねぇ
これはある意味配列なのですが配列より倒くさいです色々と

このリスト構造はチェーンリストとも呼ばれています、鎖でつないでいるようだからだそうです
その理由としては構造体の中にある構造体ポインタが次の構造体を指してその構造体にあるポインタが次の構造体のポインタを指して・・・というような・・・うん、ぶっちゃけ絵を書いた方が早いかもしれない

チェーンリスト1

ということで汚いながらも書きました。上が誰もが知っている配列です、下が今回のリストですね

配列は良く知っての通り綺麗に並んでいるのに対してリスト構造はチェーンのように繋がっています
これは構造体が持っている次の構造体を参照しているポインタ(next)が次の構造体に繋いでいると考えてください


これじゃ配列の方が簡単そうだと思われるかもしれません、というか実際はそうだと思います。わざわざこの技術を使わなくても済むなら使いません(多分)

しかしながらもしデータが10000個くらいあったとしましょう、そのうちの982番目のデータがいらなくなりました
その場合データを詰めなくてはいけません
配列ならば982番目のデータがなくなりそれ以降のデータを一つ前にずらしていく処理を行います
・・・どんだけ時間がかかるのか、なにより無駄に1000以上の入れ替え処理を行わなければなりません

それに比べて今回のチェーンリストならばnextの指しているアドレスを削除予定のnextが指しているアドレスにすればいいだけで済みます

1回ですね、はい


これも絵にかいた方がいいですかね

チェーンリスト2

絵書いてますが普通プログラマって絵は描かないですよ、本当に・・・orz
上の絵の通りですが絵には10000個のデータを書くなんて嫌ですので少なめにしましたが同じようなものです

次の参照先を別のところにするだけでよい、ということです
自分はまだまだ素人なのでまだ使っていませんがどこかで使用する機会があると思います

自分はこれをオンラインゲームのユーザー情報をこのリスト構造で格納していると聞いた事があります、何千何万のデータを格納する時は必須ですね
もちろん10個20個程度なら配列を使ってください、そっちの方が一緒に仕事をする人にも親切かもしれません

おまけですが今回書いたのはチェーンリストの中でも単方向リスト?(名前が微妙に思いだせない)と呼ばれるものです
これ以外に双方向リストとも呼ばれるものがあるのですがそれはまた後日やろうと思います、はい
スポンサーサイト
line
line

comment

管理者にだけ表示を許可する

line
line

FC2Ad

line
プロフィール

否健康食品オワタ

Author:否健康食品オワタ
27.142.178.77 (1)
27.142.178.77 (2)

2714217877.gif

line
最新記事
line
最新コメント
line
最新トラックバック
line
月別アーカイブ
line
カテゴリ
line
検索フォーム
line
RSSリンクの表示
line
リンク
line
ブロとも申請フォーム

この人とブロともになる

line
QRコード
QR
line
sub_line
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。