(* file = prlist.pas
 *
 * リスト処理のサンプル
 *
 * 作成：オケゲム／松田晋
 *
 * 使用法：
 *　　プロンプト”＞”の後に文字列を入力して行く。
 *　　空行を入力すると、それまで入力して行った文字列を
 *　　正順に表示する
 *)
 
program printList;
type
    alpha = string[32];
    refNode = ^node;
    node  = record
                name : alpha;
                next : refNode
            end;
var
    root : refNode;

function getName(var nm : alpha) : boolean;
begin
    write('>'); readln(nm);
    getName := nm <> ''
end;

procedure makeList;
var
    p : refNode; nm : alpha;
begin
    while getName(nm) do begin
        new(p);
        p^.name := nm;
        p^.next := root;
        root := p
    end
end;

procedure print(p : refNode);
begin
    if p <> nil then begin
        print(p^.next);
        writeln(p^.name);
	dispose(p)
    end
end;

begin
    root := nil;
    makeList;
    print(root)
end.
