꧁孤陌人生꧂ 2023-04-10 19:14 采纳率: 100%
浏览 24
已结题

c语言有序单链表的合并


void MergeList(LinkList *La,LinkList *Lb,LinkList *Lc){
   LNode *pa=La->next;  // 指向a链表的第一个结点
   LNode *pb=Lb->next;  // 指向b链表的第一个结点
   LNode *pc;           
   pc=Lc=La;            // 指向a链表的头结点
   while(pa!=NULL && pb !=NULL){
      if(pa->data<pb->data){
         pc->next=pa;   // 指向pa的结点
         pc=pa;         // pc指针后移
         pa=pa->next;   // pa指针后移
      }else if(pa->data>pb->data) {
         pc->next=pb; 
         pc=pb; 
         pb=pb->next;
      }else {
         pc->next=pa;
         pc=pa;
         pa=pa->next;
         LNode *q=pb->next;   // 保存pb的下一个节点
         free(pb);            // 释放pb节点
         pb =q;               
      }
   }
   pc->next=pa!=NULL?pa:pb;    //插入剩余段
   free(Lb);
}  
int main() {
   LinkList La;
   initList(&La);  // 初始化
   listInsert(&La, 1, 1);
   listInsert(&La, 2, 3);
   // listInsert(&La, 3, 5);
   // listInsert(&La, 4, 7);
   // listInsert(&La,5, 9);
   LinkList Lb;
   initList(&Lb);  // 初始化
   listInsert(&Lb, 1, 2);
   listInsert(&Lb, 2, 3);
   // listInsert(&Lb, 3, 6);
   // listInsert(&Lb, 4, 8);
   // listInsert(&Lb,5, 10);
   // 找出最大节点
   // printf("La最大节点是:%d\n",getMaxElem(&La,5)->data);
   // printf("Lb最大节点是:%d\n",getMaxElem(&Lb,5)->data);
   // 排序
   LinkList Lc;
   initList(&Lc);
   MergeList(&La,&Lb,&Lc);
   printList(&Lc);
}

学习布置两个有序单单链表的合并,不能有重复元素

img

这个是啥问题啊

  • 写回答

1条回答 默认 最新

报告相同问题?

问题事件

  • 系统已结题 4月26日
  • 已采纳回答 4月18日
  • 创建了问题 4月10日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。