• 2021-04-14
    1.假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原表(即A表和B表)的结点空间构造C表。
    //将合并逆置后的结果放在C表中,并删除B表
    StatusListMergeOppose_L(LinkList&A,LinkList&B,LinkList&C)
    {
    LinkListpa,pb,qa,qb;
    pa=A;
    pb=B;
    qa=pa;//保存pa的前驱指针
    qb=pb;//保存pb的前驱指针
    pa=pa->next;
    pb=pb->next;
    A->next=NULL;
    C=A;
    while(pa&&pb){
    if(pa->datadata){
    qa=pa;
    pa=pa->next;
    qa->next=A->next;//将当前最小结点插入A表表头
    A->next=qa;
    }
    else{
    qb=pb;
    pb=pb->next;
    ()//将当前最小结点插入B表表头
    A->next=qb;
    }
    }
    while(pa){
    qa=pa;
    pa=pa->next;
    qa->next=A->next;
    A->next=qa;
    }
    while(pb){
    qb=pb;
    pb=pb->next;
    qb->next=A->next;
    A->next=qb;
    }
    pb=B;
    free(pb);
    returnOK;
    }
  • 举一反三