sapporocpp / mokumoku

0 stars 0 forks source link

2019/08/28 もくもく会 #181 #185

Open maraigue opened 5 years ago

maraigue commented 5 years ago

引き続き、「要素取得も挿入・削除も対数時間でできるリスト構造」を実装する。 必要なメソッドを順次作っていく。前回でinsertメソッドがちゃんとできたので、他のメソッドもテストしやすくなっているはず…

ignisan commented 5 years ago

前回、実装に詰まり気味だったので参考になりそうな配列操作ライブラリを探す

maraigue commented 5 years ago

eraseを実装していた(未完成)。 STLのeraseだと「削除した要素の次の要素にあたるイテレータを返す」という処理があるが、現状のリストの実装では単にイテレータを指定して削除するところしかしておらず、戻り値に対応したかった。 それをちゃんと実装しようとすると現状の実装では面倒だということに気づき、設計を見直していた。

maraigue commented 5 years ago

メモ

二分探索木の頂点を与え、それを削除する。ただし平衡を保つ処理をしやすくするため、左右の子をともに持つ頂点は木から直接取り除けず、もし存在するならば一つ前か一つ後ろの要素を表す頂点(これが左右の子をともに持つことはありえない)と値を交換してから削除しないとならない。

考えられる状況

処理の場合分け

実際の処理

補足