有序表归并算法实现RT,对任意输入的两个按值非递减有序的整数序列,写一程序将它们归并成一个按值非递减有序序列.输入描述文

1个回答

  • PROC union(VAR LA:Linear_list; LB:Linear_list);

    {将所有在线性表LB中存在而线性表LA中不存在的数据元素插入到线性表LA中去}

    n := LENGTH(LA); {确定线性表LA的长度}

    FOR i:=1 TO LENGTH(LB) DO

    [

    x:=GET(LB,i);{取得LB中第i个数据元素}

    k:=LOCATE(LA,x);{在LA中进行搜索}

    IF k=0 THEN

    [

    INSERT(LA,n+1,x);

    n:=n+1;

    ]

    {将LA中不存在的元素插入到LA中,同时修改n的值}

    ]

    ENDP;{union}

    C语言实现--顺序存储结构

    #include

    using namespace std;

    struct sqlist//顺序存储结构

    {

    int elem[10];

    int last;

    };

    void Union (struct sqlist *LA, struct sqlist *LB);

    int Locate (struct sqlist *temp, int x);

    //

    void create(int elements[], int num, struct linklist* l)

    {

    struct linklist* p;

    int i = 0;

    //先建立一个空表

    (*l).next = NULL;

    for (i=num-1; i>=0; i--)

    {

    p = (struct linklist*)malloc (sizeof(linklist));

    (*p).data = elements[i];

    //前插式创建

    (*p).next = (*l).next;

    (*l).next = p;

    }

    }