ad-1. 連結リスト
1
金子邦彦
C 言語によるアルゴリズムとデータ構造)(全6回)
URL: https://www.kkaneko.jp/pro/ad/index.html
連結リストの概念と構造の理解C言語による実装と操
作(挿入・削除)の習得
学習内容の構成
1. リストの基本概念:順序のあるデータの集まりで、
要素の挿入・削除によりサイズが増減するデータ構
2. 配列によるリストと連結リストの比較:操作ごとの
処理速度の違いと使い分け
3. 連結リストの構造:要素を格納するセルと次のレ
コードを指すポインタで構成
4. 実習C Tutorを用いた連結リストの作成、要素の末
尾への追加・削除の実践
前提:C言語の基本文法、ポインタの理解
意義:動的なデータ管理手法の習得、メモリ効率を考
慮したプログラム設計能力の向
2
1-1. 連結リスト
3
順序のあるデータ
要素の削除挿入によりサイズが増減する
リストの性質
4
リストの組み立て,要素の挿入,要素の削除
5
リストの組み立て
要素の挿入
4を挿入
要素の削除
8を削除
リストの種類
処理
配列によるリス
連結リスト
要素の末尾への追加 高速 高速
要素の末尾以外への追
低速 高速
要素の末尾からの削除 高速 高速
要素の末尾以外からの
追加
低速 高速
添え字による要素アク
セス
高速 低速
・「高速」,「低速」は,配列によるリスト,連結リストを
比べたとき,どちらが相対的に早いかの傾向を示すもの
・連結リストでの要素の追加,削除は,追加,削除すべき
レコードのアドレスが分かっているものとする
6
配列によるリスト
あらかじめ,ある程度の長さの配列を作り,
その中にリストを格納するもの
連結リスト
データを格納するためのメモリを挿入のたびに
保.そして,削除のたびに解放.
7
連結リストとは
レコードを次の2つで構成
要素を格納するセル
リスト中の次のレコードを指すポインタを格納す
セル
8
1-2. 「リスト」を実習できる
オンラインサイトの紹介
9
10
リストとは,順序の付いたデータの並び
「リスト」を実習できる
オンラインサイトの紹介
パソコン演習
Chrome ウェブブラウザを起動する
次の URL を開く
https://visualgo.net/ja
連結リスト」をクリック
11
パソコン演習
説明が出る.ESC キーを押して,説明を消す
左下のメニューで「入れる」をクリックし,
i = N (After tail), specify v =」を選ぶ
12
パソコン演習
値が「80」のように表示されるので,確認し
ら「行く」をクリック
末尾にデータが増えるので,確認する
13
1-3. 実習
14
実習の指示
資料:1524
C Tutor に関する次のことを理解
しマスターする
C Tutor の起動手順
C Tutor の画面構成
C Tutor は,オンラインのプログ
ラム開発環境であること
15
実習
ウェブブラウザを起動する
C Tutor を使いたいので,次の URL を開く
http://www.pythontutor.com/
Internet Explorer でうまく動かない場合がある
うまく動かないときは Google Chrome を試してください
途中でServer Busy・・・」というメッセージが出る
とがある.
混雑している.少し(数秒から数十秒)待つと自動で表示
が変わる(変わらない場合には,操作をもう一度行ってみ
る)
日本語モードはない.英語で使う
16
C Tutor」をクリック
17
18
C (gcc4.8, C11)」になっている
エディタ
実行のためのボタン
最初から main メソッドの
ひな形が入っている
実習の指示
資料:1924
次のことを理解しマスターする
連結リストの作成
要素の末尾への追加
要素の末尾からの削除
19
連結リストの作成
次のプログラムを使う
20
②「Visualize Execution」をクリック.
Last」をクリック.
結果を確認する.
Edit this code」をクリックして戻る
21
実行結果
22
レコード
レコード
レコード
次のようにプログラムを書き換えて,実行し,
結果を確認しなさい.要素を末尾に挿入している
23
次のようにプログラムを書き換えて,実行し,
結果を確認しなさい.要素を末尾に挿入している
24
課題
次のリストを作成しなさい
25