このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1320365280/454
#  [1] 授業単元:C言語  
#  [2] 問題文(含コード&リンク):  
#  線形リスト構造で、整数を1つ入れる度にソートし、出力するプログラムを作成せよ 
#  配列はitem[11]とnext[11]を用意する。 
#  

'線形リスト構造で、整数を1つ入れる度にソートし、出力する'(_線形リスト,_挿入されたリスト) :-
        writef('線形リストの初期値 = %t\n',[[]]),
        '整数を1つ入れる度に'(_整数),
        '線形リスト構造で、整数を1つ入れる度にソートし、出力する'(_線形リスト,_整数,_挿入されたリスト),
        出力する(_挿入されたリスト).

'線形リスト構造で、整数を1つ入れる度にソートし、出力する'([],_挿入整数,[_挿入整数]).
'線形リスト構造で、整数を1つ入れる度にソートし、出力する'([A|R1],_挿入整数,[_挿入整数|R1]) :-
        A >= _挿入整数,!.
'線形リスト構造で、整数を1つ入れる度にソートし、出力する'([A|R1],_挿入整数,[A|R1]) :-
        A < _挿入整数,
        '線形リスト構造で、整数を1つ入れる度にソートし、出力する'([A|R1],_挿入整数,R2).

'整数を1つ入れる度に'(_整数) :-
        write('整数を1つ入れて下さい : '),
        get_line(Line),
        整数入力診断(Line,_整数),!.
'整数を1つ入れる度に'(_整数) :-
        '整数を1つ入れる度に'(_整数).

整数入力診断(Line,_整数) :-
        atom_to_term(Line,_整数,_),
        integer(_整数),!.
整数入力診断(Line,_整数) :-
        writef('入力された %t からは整数が得られません。再入力をお願いします。\n',[Line]),
        fail.

出力する(_挿入されたリスト) :-
        writef('整列された線形リスト = %t\n',[[_挿入されたリスト]]).

/*
'線形リスト構造で、整数を1つ入れる度にソートし'(_線形リスト,_挿入整数,_挿入された線形リスト) :-
        append(L0,[A|R],_線形リスト),
        _挿入整数 =< A,
        append(L0,[_挿入整数,A|R],_挿入された線形リスト),!.
'線形リスト構造で、整数を1つ入れる度にソートし'(_線形リスト,_挿入整数,_挿入された線形リスト) :-
        append(_線形リスト,[_挿入整数],_挿入された線形リスト).

*/