鱼C论坛

 找回密码
 立即注册
查看: 3131|回复: 1

[技术交流] 研究了一个星期的单链表合并算法c语言实现devC++正常编译运行

[复制链接]
发表于 2011-8-16 18:03:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #define TRUE 1
  2. #define FALSE 0
  3. #define OK 1
  4. #define ERROR 0
  5. #define INFEASIBLE -1
  6. #define OVERFELOW -2
  7. #include<stdio.h>
  8. #include<malloc.h>

  9. typedef int Status;
  10. typedef int ElemType;

  11. typedef struct node
  12. {
  13. ElemType data;
  14. struct node * next;
  15. }node, *LinkList;

  16. LinkList creat(void);
  17. void Print(LinkList head);
  18. void MergeList(LinkList head1,LinkList head2,LinkList head3);

  19. int main(void)
  20. {
  21. LinkList La_head = NULL;
  22. LinkList Lb_head = NULL;
  23. LinkList Lc_head = (LinkList)malloc(sizeof(node));

  24. La_head = creat();
  25. Lb_head = creat();

  26. Print(La_head);
  27. Print(Lb_head);

  28. MergeList(La_head,Lb_head,Lc_head);

  29. Print(Lc_head);
  30. system("pause");
  31. }

  32. LinkList creat(void)
  33. {
  34. int length;
  35. int i;
  36. int veriables;

  37. LinkList head = (LinkList)malloc(sizeof(node));
  38. if(NULL == head)
  39. {
  40. printf("No enough space!");
  41. exit(-1);
  42. }

  43. LinkList tail = head;

  44. printf("Input LinkList Length: ");
  45. scanf("%d",&length);
  46. printf("\n");

  47. for(i=0;i<length;++i)
  48. {
  49. printf("Input number %d elem: ",i+1);
  50. scanf("%d",&veriables);

  51. LinkList pnew = (LinkList)malloc(sizeof(node));
  52. if(NULL == pnew)
  53. {
  54. printf("No enough space!");
  55. exit(-1);
  56. }

  57. pnew->data = veriables;
  58. tail->next = pnew;
  59. pnew->next = NULL;
  60. tail = pnew;
  61. }
  62. printf("\n\n");
  63. return (head);
  64. }

  65. void Print(LinkList head)
  66. {
  67. LinkList p = head->next;

  68. while(p)
  69. {
  70. printf("%d ",p->data);
  71. p = p->next;
  72. }
  73. printf("\n\n");
  74. }

  75. void MergeList(LinkList head1,LinkList head2,LinkList head3)
  76. {
  77. LinkList La = head1->next;
  78. LinkList Lb = head2->next;
  79. LinkList Lc = head3;
  80. LinkList q;

  81. while(La && Lb)
  82. {
  83. if(La->data < Lb->data)
  84. {
  85. Lc->next = La;
  86. Lc = La;
  87. La = La->next;
  88. }
  89. else if(La->data == Lb->data)
  90. {
  91. Lc->next = La;
  92. Lc = La;
  93. La = La->next;
  94. q = Lb;
  95. Lb = Lb->next;
  96. free(q);
  97. }
  98. else
  99. {
  100. Lc->next = Lb;
  101. Lc = Lb;
  102. Lb = Lb->next;
  103. }
  104. }

  105. Lc->next = La ? La : Lb;
  106. free(head1);
  107. free(head2);
  108. }
复制代码

研究了一个星期希望对大家有帮助
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-17 14:07:47 | 显示全部楼层
无回帖,不论坛,这才是人道。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-17 07:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表