1 / 9

2005 年度 データ構造とアルゴリズム 第 4 回 「再帰的データ構造:リスト構造」

2005 年度 データ構造とアルゴリズム 第 4 回 「再帰的データ構造:リスト構造」. 西尾 信彦 nishio@cs.ritsumei.ac.jp 立命館大学情報理工学部 情報システム学科. typedef を覚えよう. 自分でデータ型の名前をつけられる struct xxxxx は長たらしい typedef 既存の型名 新しい型名; 例えば、 typedef struct _student student;

Download Presentation

2005 年度 データ構造とアルゴリズム 第 4 回 「再帰的データ構造:リスト構造」

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 2005年度データ構造とアルゴリズム第4回「再帰的データ構造:リスト構造」2005年度データ構造とアルゴリズム第4回「再帰的データ構造:リスト構造」 西尾 信彦 nishio@cs.ritsumei.ac.jp 立命館大学情報理工学部 情報システム学科

  2. typedefを覚えよう • 自分でデータ型の名前をつけられる • struct xxxxxは長たらしい • typedef 既存の型名 新しい型名; • 例えば、 • typedef struct _student student; • typedef struct _list { struct _list *next; int data;} *list, listelem;

  3. リストの先頭と最後 • 先頭要素を指すポインタが必要 • リストの最後の要素はどこを指す? • どこも指さない NULL • 自分を指す • (ダミーの)先頭要素を指す

  4. リストへの要素の挿入と削除 • どちらもポインタを指し換えにより実現 • リストと対象要素を与えられて処理する • それだけでは済まない • 一つ前の要素も書き換えないと • どこに入れるかで変わる処理 • 先頭かそれ以外で処理が違うのが気持ち悪い • ダミーの先頭要素を用意すると解消する

  5. 二重リンクされたリスト • 次の要素を指すだけでなく、前の要素も指す • 挿入や削除が対象要素だけでできる • 処理は倍の手間 • 両端はどうする? • ともにNULL • 両端をつなげて循環リスト

  6. リストで実現するデータ構造 • スタック • LIFO Last In First Out • キュー • FIFO First In First Out • デク DEQ • Double Ended Queue

  7. スタック • LIFOのデータ構造 • Push:スタックに1つデータを積む • Pop:スタックから1つデータを取り出す • Top:スタックの一番上にあるデータを見る • スタックのデータ構造 • リストそのもの • スタックへの操作を上記の3つに制限することによってリストでスタックを実現する

  8. キュー • 待ち行列を表現するデータ構造 • FIFO 最初に並んだ人が最初にサービスされる • Empty:キューが空かどうか見る • Enqueue:キューに1つデータを追加する • Dequeue:キューから1つデータを取り出す • Peek:キューの先頭のデータを見る

  9. デク DEQ • 先頭にも最後にもデータを追加、取り出しできるデータ構造 • 二重リンクされたリストで作成 • Unshift:リストの先頭にデータを追加 • Push:リストの末尾にデータを追加 • Shift:リストの先頭からデータを取り出す • Pop:リストの末尾からデータを取り出す

More Related