【数据结构】(单链表)求两个链表的交集

浅浅的花香味﹌ 2021-10-30 00:14 454阅读 0赞

算法思想:其实就是合并链表相同的元素(假设链表有序)

  1. void Union(LinkList &A,LinkList &B){
  2. if(A->next==NULL||B->next==NULL)
  3. return ;
  4. LinkList pa=A->next;
  5. LinkList pb=B->next;
  6. LinkList r=A;
  7. LinkList sa;
  8. LinkList sb;
  9. A->next=NULL;
  10. while(pa&&pb){
  11. if(pa->data==pb->data){
  12. sa=pa->next;
  13. sb=pb->next;
  14. pa->next=r->next;//尾插法
  15. r->next=pa;
  16. r=pa;
  17. pa=sa;
  18. free(pb);
  19. pb=sb;
  20. }else if(pa->data<pb->data){
  21. sa=pa->next;
  22. free(pa);
  23. pa=sa;
  24. }else{
  25. sb=pb->next;
  26. free(pb);
  27. pb=sb;
  28. }
  29. }
  30. while(pa){
  31. sa=pa->next;
  32. free(pa);
  33. pa=sa;
  34. }
  35. while(pb){
  36. sb=pb->next;
  37. free(pb);
  38. pb=sb;
  39. }
  40. free(B);
  41. r->next=NULL;

发表评论

表情:
评论列表 (有 0 条评论,454人围观)

还没有评论,来说两句吧...

相关阅读

    相关 数据结构-

        单链表即每个节点都存在数据域和指针域(特殊节点除外),每个节点都一个直接前驱节点和直接后继节点(头节点无前驱,尾节点无后继),简单来说就是上一个节点的指针域中存放了下一