データの取り扱い

結局昨日はハード側の話でスタックが出てきたのをきっかけにスタックとキューを作ってみて終わった気がします。データ構造の勉強にはなりましたが。
毎度ながら動的にメモリを確保したがる性分なのでrealloc()を使いまくり。スタックは底が決まっているので配列を動的に構成する形でいいのですが、キューは底が上がっていくので配列では無駄が多すぎ、dequeueのことを考えて双方向リストに。動的に確保した配列の途中までを解放し、それ以降を保持し続けるなどという気味の悪いことをできるかどうか知らないのでこれ以上単純な構造は作れそうにありません><
ちなみにアルゴリズムのテキストなんかを見るとデータはint型の数値だったりしますが、そんなものは汎用性に欠け使い勝手が悪いと思いこんでいるのでchar型の動的配列に。機会があればこういった構造も使ってみようかな。HTMLの間違い探しとか(笑

昨日の日記にも少し書いたアンロールですが、memcmp()ではあまり使えない気がしてきました・・・。というのも比較する最大数はsizeで決めますが、1文字目の比較であっさり終了することもありますし、その上そういったケースが使い方によっては頻繁に起こりうるので、最初に費やされるコストを減らす必要があるのです。少なくとも私の頭に浮かんだ実装ではその初期コストが大きくなってしまうので比較文字数が多い場合には有効ですが少ない場合にはかえって悪化すると思われます。思いつかないだけでもっと良い実装があるのかもしれませんが・・・。