[B6] リスト処理 [B6] リスト処理 大崎 博之 関西学院大学 理工学部 情報科学科 [email protected] プログラミング実習 III 1/ 9 [B6] リスト処理 [B6] リスト処理 ▶ ▶ 1. リスト 2. 二分木 これらを学ぶことに何の意味があるのか? プログラミング実習 III 2/ 9 [B6] リスト処理 リスト (list) data link 123 コンピュータサイエンスにお ける、もっとも基本的なデー タ構造の一つ ▶ ▶ node ノード (node) の順列 (sequence) ノードとノードが連結 (link) されている プログラミング実習 III 456 789 375 3/ 9 [B6] リスト処理 リストの利点と欠点 (配列と比較した時の) リストの利点 ▶ 要素を自由に挿入・削除できる (配列と比較した時の) リストの欠点 ▶ 各要素を参照するのが面倒 (リストを辿らないとダメ) ▶ 途中のノードに直接アクセスできない プログラミング実習 III 4/ 9 [B6] リスト処理 代表的なリスト: 片方向リスト (singly linked list) data link 123 node 456 789 375 プログラミング実習 III 5/ 9 [B6] リスト処理 代表的なリスト: 双方向リスト (doubly linked list) link data 123 link node 456 789 375 プログラミング実習 III 6/ 9 [B6] リスト処理 代表的なリスト: 循環リスト (circular list) data link 123 456 node 789 375 プログラミング実習 III 7/ 9 [B6] リスト処理 二分木 (binary tree) コンピュータサイエンスにお ける、基本的なデータ構造の 一つ ▶ ノード (node) の木 (tree) ▶ ノードは 2 つの子ノード を持つ (左 (left)、右 (right)) 高速なアルゴリズムが実現で きるのはツリーのおかげ ▶ root 5 link (edge) 3 8 node (vertex) left right 1 4 leaf leaf ノード数 N の二分木は 深さ log2 N プログラミング実習 III 12 10 leaf 8/ 9 [B6] リスト処理 リストやツリーはなぜ必要か? ▶ プログラミングの本質は アルゴリズム と データ構造 ▶ プログラミングの成功/失敗は…… ▶ 良い アルゴリズム を考えられるか? ▶ 良い データ構造 を考えられるか? ▶ プログラミングテクニックは実は瑣末 (さまつ) な 問題 ▶ だから大学の講義はとても重要! → 設計した データ構造 を実現するために リスト や ツリー が不可欠 プログラミング実習 III 9/ 9
© Copyright 2024 ExpyDoc