当前位置:   article > 正文

耿国华数据结构(C语言)【顺序表的合并完整程序代码】

耿国华数据结构(C语言)【顺序表的合并完整程序代码】
  1. #include "stdio.h"
  2. /*宏定义*/
  3. #define MAXSIZE 100
  4. #define OK 1
  5. #define ERROR 0
  6. typedef int ElemType;
  7. /*顺序表中存放整型元素*/
  8. typedef struct{
  9. ElemType elem[MAXSIZE];
  10. //ElemType目前为整型
  11. int last;
  12. }SeqList;
  13. /*函数声明*/
  14. void initList(SeqList *L);
  15. void printList(SeqList L);
  16. void inputData(SeqList *L);
  17. void merge(SeqList *LA,SeqList *LB,SeqList *LC);
  18. /*主函数*/
  19. int main()
  20. {
  21. SeqList La,Lb,Lc;
  22. /* 初始化三个顺序表*/
  23. initList(&La);
  24. initList(&Lb);
  25. initList(&Lc);
  26. /*给顺序表La和Lb赋初值*/
  27. printf("请给顺序表La输入元素(按非递减顺序),输入-100表示结束\n");
  28. inputData(&La);
  29. printf("请给顺序表Lb输入元素(按非递减顺序),输入-100表示结束\n");
  30. inputData(&Lb);
  31. merge(&La,&Lb,&Lc);
  32. /*输出三个顺序表*/
  33. printf("\nLa=");
  34. printList(La);
  35. printf("\nLb=");
  36. printList(Lb);
  37. printf("\nLc(La+Lb)=");
  38. printList(Lc);
  39. getchar(); //让输出界面不闪退,观察结果
  40. return 1;
  41. }
  42. /*函数定义*/
  43. void initList(SeqList *L)
  44. {
  45. L->last=-1;
  46. }
  47. void inputData(SeqList *L)
  48. {
  49. int i=0,num;
  50. scanf("%d",&num);
  51. while(num!=-100)
  52. {
  53. L->elem[i]=num;
  54. i++;
  55. scanf("%d",&num);
  56. }
  57. L->last=i-1;
  58. }
  59. void printList(SeqList L)
  60. {
  61. int i;
  62. printf("(");
  63. for(i=0;i<=L.last;i++)
  64. printf("%d ",L.elem[i]);
  65. printf(")");
  66. }
  67. //以下函数是改程序的核心部分
  68. void merge(SeqList *LA, SeqList *LB, SeqList *LC)
  69. {
  70. int i,j,k;
  71. i=0;j=0;k=0;
  72. while(i<=LA->last&&j<=LB->last)
  73. if(LA->elem[i]<=LB->elem[j])
  74. {
  75. LC->elem[k]= LA->elem[i];
  76. i++;
  77. k++;
  78. }
  79. else
  80. {
  81. LC->elem[k]=LB->elem[j];
  82. j++;
  83. k++;
  84. }
  85. while(i<=LA->last)
  86. /*当表LA有剩余元素时,则将表LA余下的元素赋给表LC*/
  87. {
  88. LC->elem[k]= LA->elem[i];
  89. i++;
  90. k++;
  91. }
  92. while(j<=LB->last)
  93. /*当表LB有剩余元素时,则将表LB余下的元素赋给表LC*/
  94. {
  95. LC->elem[k]= LB->elem[j];
  96. j++;
  97. k++;
  98. }
  99. LC->last=LA->last+LB->last+1;
  100. }

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

闽ICP备14008679号