当前位置:   article > 正文

【ACM】杭电OJ 2019

杭电oj 2019

可以用链表写,也可以用顺序表写:

下面是链表的AC代码:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. typedef struct node
  4. {
  5. int info;
  6. struct node* next;
  7. }N;
  8. N* init()
  9. {
  10. return NULL;
  11. }
  12. N* creat(N* head,int n)
  13. {
  14. int i,x;
  15. N *p, *q = NULL;
  16. for (i = 1; i <= n; i++)
  17. {
  18. scanf_s("%d", &x);
  19. p = (N*)malloc(sizeof(N));
  20. p->info = x;
  21. p->next = NULL;
  22. if (!head)
  23. {
  24. head = p;
  25. q = p;
  26. }
  27. else
  28. {
  29. q->next = p;
  30. q = p;
  31. }
  32. }
  33. return head;
  34. }
  35. void display(N* head)
  36. {
  37. N *p=head;
  38. while (p)
  39. {
  40. if (p->next)
  41. printf("%d ", p->info);
  42. else
  43. printf("%d\n",p->info);
  44. p = p->next;
  45. }
  46. }
  47. N *insert(N* head,int x)
  48. {
  49. N *p,*q=head,*qq=head->next;
  50. p = (N*)malloc(sizeof(N));
  51. p->info = x;
  52. if (p->info <= head->info)
  53. {
  54. p->next = head;
  55. head = p;
  56. return head;
  57. }
  58. while (qq)
  59. {
  60. if (p->info >= q->info && p->info <= qq->info)
  61. {
  62. p->next = qq;
  63. q->next = p;
  64. break;
  65. }
  66. else
  67. {
  68. q = qq;
  69. qq = qq->next;
  70. }
  71. }
  72. if (!qq)
  73. {
  74. q->next = p;
  75. p->next = NULL;
  76. }
  77. return head;
  78. }
  79. int main()
  80. {
  81. N *h;
  82. int m, n;
  83. while (scanf_s("%d%d", &n, &m) != EOF)
  84. {
  85. if (n == 0 && m == 0) return 0;
  86. h = init();
  87. h = creat(h, n);
  88. h = insert(h, m);
  89. display(h);
  90. }
  91. return 0;
  92. }

下面是通过移动数组的元素进行:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int main()
  5. {
  6. int a[110], n, t, i, m;
  7. while (scanf_s("%d%d", &n, &m) != EOF)
  8. {
  9. if (m == 0 && n == 0)return 0;
  10. t = -1;
  11. memset(a, 0, sizeof(a));
  12. if (m == 0 && n == 0) return 0;
  13. for (i = 0; i < n; i++)
  14. {
  15. scanf_s("%d", &a[i]);
  16. if (a[i] < m)
  17. {
  18. t = i;
  19. }
  20. }
  21. if (t == -1)
  22. {
  23. for (i = n; i >= 1; i--)
  24. {
  25. a[i] = a[i - 1];
  26. }
  27. a[0] = m;
  28. }
  29. else if(t<n-1)
  30. {
  31. for (i = n; i >= t + 1; i--)
  32. {
  33. a[i] = a[i - 1];
  34. }
  35. a[t + 1] = m;
  36. }
  37. else if (t == n - 1)
  38. {
  39. a[n] = m;
  40. }
  41. for (i = 0; i <= n; i++)
  42. {
  43. if (i != n)
  44. {
  45. printf("%d ", a[i]);
  46. }
  47. else
  48. {
  49. printf("%d\n", a[i]);
  50. }
  51. }
  52. }
  53. return 0;
  54. }

上面的是用数组写的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/884281
推荐阅读
相关标签
  

闽ICP备14008679号