View
61
Download
1
Category
Preview:
DESCRIPTION
2005 年度 データ構造とアルゴリズム 第 4 回 「再帰的データ構造:リスト構造」. 西尾 信彦 nishio@cs.ritsumei.ac.jp 立命館大学情報理工学部 情報システム学科. typedef を覚えよう. 自分でデータ型の名前をつけられる struct xxxxx は長たらしい typedef 既存の型名 新しい型名; 例えば、 typedef struct _student student; - PowerPoint PPT Presentation
Citation preview
2005 年度データ構造とアルゴリズム
第 4 回「再帰的データ構造:リスト構
造」
西尾 信彦 nishio@cs.ritsumei.ac.jp
立命館大学情報理工学部情報システム学科
typedef を覚えよう
• 自分でデータ型の名前をつけられる• struct xxxxx は長たらしい• typedef 既存の型名 新しい型名;• 例えば、
– typedef struct _student student;
– typedef struct _list { struct _list *next; int data;} *list, listelem;
リストの先頭と最後• 先頭要素を指すポインタが必要• リストの最後の要素はどこを指す?
– どこも指さない NULL– 自分を指す– ( ダミーの ) 先頭要素を指す
リストへの要素の挿入と削除• どちらもポインタを指し換えにより実現• リストと対象要素を与えられて処理する
– それだけでは済まない– 一つ前の要素も書き換えないと
• どこに入れるかで変わる処理– 先頭かそれ以外で処理が違うのが気持ち悪い– ダミーの先頭要素を用意すると解消する
二重リンクされたリスト• 次の要素を指すだけでなく、前の要素
も指す• 挿入や削除が対象要素だけでできる• 処理は倍の手間• 両端はどうする?
– ともに NULL– 両端をつなげて循環リスト
リストで実現するデータ構造• スタック
– LIFO Last In First Out
• キュー– FIFO First In First Out
• デク DEQ– Double Ended Queue
スタック• LIFO のデータ構造• Push :スタックに 1 つデータを積む• Pop :スタックから 1 つデータを取り出す• Top :スタックの一番上にあるデータを見
る• スタックのデータ構造
– リストそのもの• スタックへの操作を上記の 3 つに制限する
ことによってリストでスタックを実現する
キュー• 待ち行列を表現するデータ構造• FIFO 最初に並んだ人が最初にサービスさ
れる• Empty :キューが空かどうか見る• Enqueue :キューに 1 つデータを追加する• Dequeue :キューから 1 つデータを取り出
す• Peek: キューの先頭のデータを見る
デク DEQ
• 先頭にも最後にもデータを追加、取り出しできるデータ構造– 二重リンクされたリストで作成
• Unshift :リストの先頭にデータを追加• Push :リストの末尾にデータを追加• Shift :リストの先頭からデータを取り出す• Pop :リストの末尾からデータを取り出す
Recommended