viency13 2023-03-13 09:52 采纳率: 68.8%
浏览 17
已结题

这输出老为空是怎个事啊

已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。
输入格式:
输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。
输出格式:
在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。
输入样例:
1 2 5 -1
2 4 5 8 10 -1
输出样例:
2 5

  1. #include <iostream>
  2. using namespace std;
  3. typedef struct Lnode
  4. {
  5. int data;
  6. Lnode *next;
  7. }Lnode, *Linklist;
  8. void creat_a( Linklist &La )
  9. {
  10. Linklist p, q;
  11. La = new Lnode;
  12. La->next = NULL;
  13. q = La;
  14. while (1)
  15. {
  16. p = new Lnode;
  17. cin>>p->data;
  18. if ( p->data == -1 )
  19. {
  20. return;
  21. }
  22. p->next = NULL;
  23. q->next = p;
  24. q = p;
  25. }
  26. }
  27. void creat_b ( Linklist &Lb )
  28. {
  29. Linklist p, q;
  30. Lb = new Lnode;
  31. Lb->next = NULL;
  32. q = Lb;
  33. while(1)
  34. {
  35. p = new Lnode;
  36. cin>>p->data;
  37. if ( p->data == -1 )
  38. {
  39. return;
  40. }
  41. p->next = NULL;
  42. q->next = p;
  43. q = p;
  44. }
  45. }
  46. void jiaoji ( Linklist &La, Linklist &Lb, Linklist &Lc )
  47. {
  48. Linklist pa, pb, q, r;
  49. Lc = new Lnode;
  50. Lc->next = NULL;
  51. pa = La;
  52. pb = Lb;
  53. r = Lc;
  54. while ( pa->next != NULL )
  55. {
  56. while ( pb->next != NULL )
  57. {
  58. if ( pa->next->data == pb->next->data )
  59. {
  60. q = new Lnode;
  61. q->data = pb->next->data;
  62. q->next = NULL;
  63. r->next = q;
  64. r = q;
  65. }
  66. pb = pb->next;
  67. }
  68. pa = pa->next;
  69. }
  70. }
  71. void Print(Linklist Lc)
  72. {
  73. Linklist p = Lc->next;
  74. if ( p == NULL )
  75. {
  76. cout << "NULL";
  77. }
  78. while (p != NULL)
  79. {
  80. cout << p->data;
  81. if (p->next != NULL)
  82. {
  83. cout << " ";
  84. }
  85. p = p->next;
  86. }
  87. }
  88. int main ()
  89. {
  90. Linklist La, Lb, Lc;
  91. creat_a (La);
  92. creat_b(Lb);
  93. jiaoji (La, Lb, Lc);
  94. Print (Lc);
  95. return 0;
  96. }

展开全部

  • 写回答

4条回答 默认 最新

  • 我爱OJ 2023-03-13 10:11
    关注

    这个是找交集的程序吗,我有更简单的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    我爱OJ 2023-03-13 10:11

    1. #include <iostream>
    2. using namespace std;
    3. int main()
    4. {
    5. int a[32768], b[32768], A[32768] = {0}, c, d, e = 0;
    6. cin >> c;
    7. for (int i = 0; i < c; i++)
    8. {
    9. cin >> a[i];
    10. A[a[i]] = 1;
    11. }
    12. cin >> d;
    13. for (int i = 0; i < d; i++)
    14. {
    15. cin >> b[i];
    16. }
    17. for (int i = 0; i < d; i++)
    18. {
    19. if (A[b[i]] == 1)
    20. {
    21. if (e != 0)
    22. {
    23. cout << " ";
    24. }
    25. e++;
    26. cout << b[i];
    27. A[b[i]] = 0; // 标记该数字已输出
    28. }
    29. }
    30. if (e == 0)
    31. {
    32. cout << "0";
    33. }
    34. return 0;
    35. }

    回复
    我爱OJ 回复 我爱OJ 2023-03-13 10:11

    亲手写的,望采纳

    回复
    viency13 2023-03-13 10:12

    蟹蟹,刚学链表,所以用链表来练习

    回复
    展开全部5条评论
查看更多回答(3条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月20日
  • 已采纳回答 3月13日
  • 创建了问题 3月13日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部