No.1type
  TListNode = ^TListData;
  TListData = record
    rNo: Integer; //存放原序号
    rData: string[10]; //存放名字
    rVou: Integer; //存放链表值
    rNext: TListNode; //下一个节点
  end;procedure TForm1.Button1Click(Sender: TObject);
var
  vHeadNode: TListNode;
  vTempNode: TListNode;
  vNewNode: TListNode;
  I: Integer;
begin
  vHeadNode := nil;
  for I := 0 to Memo1.Lines.Count - 1 do begin
    New(vNewNode);
    vNewNode^.rNo := I;
    vNewNode^.rData := Memo1.Lines[I];
    vNewNode^.rNext := nil;
    if vHeadNode <> nil then begin
      vTempNode := vHeadNode;
      while (vTempNode^.rNext <> nil) and
        (vTempNode^.rNext^.rData < vNewNode^.rData) do
        vTempNode := vTempNode^.rNext;
        if (vTempNode = vHeadNode) and
          (vHeadNode^.rData > vNewNode^.rData) then begin
          vNewNode^.rNext := vHeadNode;
          vHeadNode := vNewNode;
        end else begin
          vNewNode^.rNext := vTempNode.rNext;
          vTempNode^.rNext := vNewNode;
        end;
    end else vHeadNode := vNewNode;
  end;
  vTempNode := vHeadNode;
  while vTempNode <> nil do begin
    Memo2.Lines.Add(Format('%s', [vTempNode^.rData]));
    vNewNode := vTempNode;
    vTempNode := vTempNode^.rNext;
    Dispose(vNewNode);
  end;
end;