꧁孤陌人生꧂ 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日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装