• 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;
    }
  • qb->next=A->next

    举一反三

    内容

    • 0

      【填空题】以下程序的输出结果是 。 main() {int a=10,b=20,*pa=&a,*pb=&b,*p; p=pa;pa=pb;pb=p; printf(“%d,%d”,*pa,*pb);}

    • 1

      若有语句:int a,b; int *pa,*pb; pa=&a; pb=&b; 正确的输入语句是() A: scanf("%d%d",x, y); B: scanf("%d%d",pa,pb); C: scanf("%d%d",&pa,&pb); D: scanf("%d%d",*pa,*pb);

    • 2

      voidmain(){inta[10],b'10],*pa,*pb;pa=a;pb=b;for(inti=0;i<3;i++,pa++,pb++){*pa=i;*pb=2*i;}pa=&a[0];pb=&b[0];for(inti=0;i<3;i++){*pa=*pa+i;*pb=*pb+i;cout<<*pa++<<","<<*pb++<<",";}}

    • 3

      假设有int a=1,*pa=&a; float b=1.2, *pb=&b; 则 pb=pa;是合法的。

    • 4

      两种液体A(1)和B(l)可以形成理想液态混合物,在相同温度时纯物质的饱和蒸气压pA*>pB*。当液态混合物的组成处于0<XB<1时,混合物的总蒸气压力与P与pA*和pB*的大小关系为 A: P > pA* >pB* B: pA*>P>pB* C: pA*<P<pB* D: P<pA* = pB*