字段:MO  S1  S2  S3  S4  S5  S6 
数值:1   A   B   C   D   E   F
      2   G   H   C   I   J   K
以上是一个表结构,现提供A、K,这样查找到A和K所在行的相同点C。
次程序类似公交车查询转一次车
有哪为高手能帮个忙给个算法或例子的,信箱:[email protected]

解决方案 »

  1.   

    1   A   B   C   D   E   F
    2   G   H   C   I   J   K1.查找出A所在的线路1
    2.查找出K所在的线路2
    3.把线路1与线路2合并(可以用二路归并)成线路0,此时线路0中是已经排序的
      A B C C D E F G H I J K
    4.在线路0中查找相邻的两个节点相同的C,搞定
      

  2.   

    to :小虫
    能否给我个程序[email protected]
    谢谢
      

  3.   

    给你写了个简单的例子:procedure TForm1.Button1Click(Sender: TObject);
    var
      L0, L1, L2, L3: TStringList;
      I: Integer;
      LastS: string;
    begin
      L0 := TStringList.Create;//表示一、二路的合并结果
      L1 := TStringList.Create;//表示第一路
      L2 := TStringList.Create;//表示第二路
      L3 := TStringList.Create;//表示查找出的结果
      try
        L1.Add('A');
        L1.Add('B');
        L1.Add('C');
        L1.Add('D');
        L1.Add('E');
        L1.Add('F');
        L1.Sort;
        
        L2.Add('G');
        L2.Add('H');
        L2.Add('C');
        L2.Add('I');
        L2.Add('E');
        L2.Add('K');
        L2.Sort;    for I := 0 to L1.Count -1 do
        begin
          L0.Add(L1[I]);
        end;
        for I := 0 to L2.Count -1 do
        begin
          L0.Add(L2[I]);
        end;
        L0.Sort;      //把合并后的排序
        LastS := L0[0];
        for I := 1 to L0.Count -1 do  //查找两个连续相同的元素
        begin
          if L0[I] = LastS then L3.Add(LastS);
          LastS := L0[I];
        end;
        ShowMessage('结果是:' + L3.CommaText);
      finally
        L0.Free;
        L1.Free;
        L2.Free;
        L3.Free;
      end;
    end;