• Problem A: 两个有序链表序列的合并


    Problem Description

    已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的并集新非降序链表S3。

    Input Description

    输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。

    Output Description

    在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。

    Sample Input

    1 3 5 -1
    2 4 6 8 10 -1

    Sample Output

    1 2 3 4 5 6 8 10
    

    Hint

    链表

    我开始写的代码:

    本来想写注释的但没有时间,期末在补吧······

    1. #include
    2. using namespace std;
    3. typedef struct LNode
    4. {
    5. int date;
    6. struct LNode *next;
    7. }LNode, *LinkList;
    8. void InsterList(LinkList &S1)
    9. {
    10. LinkList p;
    11. p = S1;
    12. int n;
    13. cin >> n;
    14. while (n != -1)
    15. {
    16. LinkList s = (LinkList)malloc(sizeof(LNode));
    17. s->date = n;
    18. s->next = NULL;
    19. p->next = s;
    20. p = p->next;
    21. cin >> n;
    22. }
    23. }
    24. void PrintList(LinkList S)
    25. {
    26. LinkList p;
    27. p = S->next;
    28. if (p == NULL)
    29. {
    30. cout << "NULL" << endl;
    31. }
    32. else
    33. {
    34. int i = 0;
    35. while (p != NULL)
    36. {
    37. if (i++ > 0)
    38. {
    39. cout << " ";
    40. }
    41. cout << p->date;
    42. p = p->next;
    43. }
    44. cout << endl;
    45. }
    46. }
    47. void SortLink(LinkList &S1, LinkList &S2, LinkList &S3)
    48. {
    49. LinkList pa, pb;
    50. LinkList pc;
    51. pa = S1->next;
    52. pb = S2->next;
    53. S3 = S1;
    54. pc = S3;
    55. while (pa && pb)
    56. {
    57. if (pa->date <= pb->date)
    58. {
    59. pc->next = pa;
    60. pc = pa;
    61. pa = pa->next;
    62. }
    63. else
    64. {
    65. pc->next = pb;
    66. pc = pb;
    67. pb = pb->next;
    68. }
    69. }
    70. pc->next = pa ? pa : pb;
    71. delete S2;
    72. }
    73. int main()
    74. {
    75. LinkList S1 = (LinkList)malloc(sizeof(LNode));
    76. LinkList S2 = (LinkList)malloc(sizeof(LNode));
    77. LinkList S3 = (LinkList)malloc(sizeof(LNode));
    78. S1->next = NULL;
    79. S2->next = NULL;
    80. S3->next = NULL;
    81. int n;
    82. InsterList(S1);
    83. InsterList(S2);
    84. SortLink(S1, S2, S3);
    85. PrintList(S3);
    86. return 0;
    87. }

  • 相关阅读:
    基于SSM的高校勤工助学系统
    数字秒表VHDL实验箱精度毫秒可回看,视频/代码
    EXTI外部中断
    数据链路层-差错检验
    彩色年终工作总结汇报PPT模板下载
    大规模爬虫系统面临的主要挑战及解决思路
    消息队列实现进程之间通信方式代码,现象
    【linux】Vmware安装CentOS 7.9
    MySQL基础
    Ubuntu16.04apt更新失败
  • 原文地址:https://blog.csdn.net/QQ3503814312/article/details/126975121