単連結リストの整列 #11 リスト要素の値の型を変えたい

これまでリストに格納する値はint型で固定だったので、
他のデータ型を格納したリストも整列できるようにしたい。
最も素直でお手軽で原始的な方法は、
リストの作成から整列に至るまで各データ型専用のデータ構造と関数を用意することだろう。
でも面白みに欠ける嫌いがあるのでもっとくせぐせしきものにしよう。

とりあえず枠組を少し変更することを考える。
今は、リスト構造とそれを扱う関数群でひとまとまり、
そして、これを利用する利用者サイドのまとまりの二つに分けている。
これを単連結リストの整列という処理を中心に考えて、
抽象度を上げた単連結リストのデータ構造と、これを整列する関数でひとまとまり、
格納するデータ型に合わせて具象化したリスト構造とこれを扱う関数の実装でひとまとまり、
これらを利用する利用者コードでひとまとまりの三つに分けてみよう。