データ構造【線形テーブル(二)チェーンテーブル】項目の単一チェーンテーブル:接続


/**データ構造【線形表(二)チェーン表】プロジェクトの単一チェーン表:接続*Copyright(c)2015煙台大学コンピュータと制御工学院*All right reserved.*ファイル名:danlianbiao.cpp*タイトル:データ構造【線形表(二)チェーン表】項目の単一チェーン表:逆置き、接続と増分判断*分類:単一チェーン表:逆置き、接続と増分判断*writer:羅海員*date:2015年10月04日*バージョン:V 1.0.1*オペレーティングシステム:XP*実行環境:VC 6.0*問題の説明:L 1とL 2がそれぞれ2つの単一チェーンテーブルのヘッダノードを指し、その長さがそれぞれm、nであることが知られているので、L 2をL 1の後ろに接続するアルゴリズムを設計してください.このアルゴリズムを実現し,テストを完了し,このアルゴリズムの複雑さを解析した.        1. 単一チェーンテーブルのストレージ構造を定義し、ヘッダプラグインとテールプラグインで単一チェーンテーブルを作成し、作成後の結果を表示します.        2.複雑度の要求、アルゴリズムを設計して専門の関数でアルゴリズムを実現します;        3.理論と実践を結びつけて*入力説明:*アルゴリズムライブラリは2つのファイルを含む:ヘッダファイル:linklist.h、シーケンステーブルデータ構造を定義するコード、マクロ定義、アルゴリズムを実現する関数の宣言を含む.(前に示す)ソースファイル:2.ソースファイル:linklist.cppは、各種アルゴリズムを実現する関数の定義*プログラム出力を含む:(以下の図)
*/
<span style="font-size:14px;">//  :      O(m),    L1            , L1     , L2   n  。
#include <stdio.h>
#include <malloc.h>
#include "linklist.h"

void Link(LinkList *&L1, LinkList *&L2)
{
    LinkList *p = L1;
    while(p->next != NULL)   //  L1    
        p = p->next;
    p->next = L2->next;  // L2          L1     
    free(L2);   //        L2    
}

int main()
{
    LinkList *A, *B;
    int i;
    ElemType a[]= {1,3,2,9};
    ElemType b[]= {0,4,7,6,5,8};
    InitList(A);
    for(i=3; i>=0; i--)
        ListInsert(A, 1, a[i]);
    InitList(B);
    for(i=5; i>=0; i--)
        ListInsert(B, 1, b[i]);
    Link(A, B);
    printf("A:");
    DispList(A);
    DestroyList(A);
    return 0;
}
</span>