rsZheng4916 2022-01-06 14:54 采纳率: 60%
浏览 38
已结题

有序表合并后的打印问题

#include<stdio.h>
#include<stdlib.h>

typedef struct LinkList{
    int data;
    struct LinkList *next;
}LNode,*LinkList;

LinkList InitList(){
    LinkList L = (LinkList)malloc(sizeof(LNode));
    L->next = NULL;

    return L;
}

LinkList CreateList(LinkList L,int data[],int n){
    LinkList r;
    L = (LinkList)malloc(sizeof(LNode));
    r = L;

    LinkList s;
    int i;
    for(i = 0;i < n;i++){
        s = (LinkList)malloc(sizeof(LNode));
        s->data = data[i];
        r->next = s;
        r = s;
    }
    r->next = NULL;
    return L;
}

void DisplayList(LinkList L){
    LinkList p = L->next;
    while(p != NULL){
        printf("%d ",p->data);
        p = p->next;
    }
    printf("\n");
}

void MergeList(LinkList La,LinkList Lb,LinkList Lc){
    LinkList pa = La->next;
    LinkList pb = Lb->next;
    LinkList pc = Lc = La;

    while(pa && pb){
        if(pa->data <= pb->data){
            pc->next = pa;
            pc = pa;
            pa = pa->next;
        }else{
            pc->next = pb;
            pc = pb;
            pb = pb->next;
        }
    }
    pc->next = pa ? pa : pb;
    free(Lb);
}

int main(){
    int ArrayA[] = {1,7,8};
    int ArrayB[] = {2,4,6,8,10,11};
    
    LinkList La = CreateList(La,ArrayA,3);
    LinkList Lb = CreateList(Lb,ArrayB,6);
    LinkList Lc = InitList();

    DisplayList(La);
    DisplayList(Lb);

    MergeList(La,Lb,Lc);

    DisplayList(Lc);
}

如下图,73行执行了合并操作,为什么75行的打印依旧为空!

img

  • 写回答

2条回答 默认 最新

  • fuill 2022-01-06 15:38
    关注
    LinkList pc = Lc;// = La;
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月11日
  • 已采纳回答 1月11日
  • 创建了问题 1月6日

悬赏问题

  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条