単連結リストの整列 #14 少し余裕をもたせたインタフェイス

結局こんなインタフェイスでいくことに落ち着いた。

lsort.h
#ifndef LSORT_H_INCLUDED
#define LSORT_H_INCLUDED

void lsort(void *base_ptr, int (*issup)(const void *, const void *, void *), void *arg);

#endif /* LSORT_H_INCLUDED */

順位付けを行う関数issupに任意の情報を渡せるよう引数を三つとるようにし、
整列を行う関数lsortで三つ目の引数としてその情報を与えるようにした。
issupでそのような情報が不要ならargにはNULLでも何でも適当なものを与えておけばいい。
単連結リストを指定する第一引数base_ptrはリストの先頭要素のアドレス自体を渡すのではなく、
そのアドレスを格納しているアドレス、つまり、先頭要素へのポインタへのポインタを渡す。