当前位置:   article > 正文

2024.7.24 作业

2024.7.24 作业

1.二叉树的创建、遍历自己实现一遍

bitree.h

  1. #ifndef BITREE_H
  2. #define BITREE_H
  3. #include <myhead.h>
  4. typedef char datatype;
  5. typedef struct Node
  6. {
  7. datatype data;
  8. struct Node *left_child;
  9. struct Node *right_child;
  10. }Node,*BiTreePtr;
  11. //创建二叉树
  12. BiTreePtr tree_create();
  13. //先序遍历
  14. void prio_order(BiTreePtr B);
  15. //中序遍历
  16. void in_order(BiTreePtr B);
  17. //后序遍历
  18. void post_order(BiTreePtr B);
  19. #endif

bitree.c 

  1. #include "bitree.h"
  2. //创建二叉树
  3. BiTreePtr tree_create()
  4. {
  5. char data = 0;
  6. scanf(" %c",&data);
  7. if( data=='#')
  8. {
  9. return NULL;
  10. }
  11. BiTreePtr p = (BiTreePtr)malloc(sizeof(Node));
  12. if( NULL==p )
  13. {
  14. printf("节点申请失败\n");
  15. return NULL;
  16. }
  17. p->data = data;
  18. p->left_child = tree_create();
  19. p->right_child = tree_create();
  20. return p;
  21. }
  22. //先序遍历
  23. void prio_order(BiTreePtr B)
  24. {
  25. if( NULL==B )
  26. {
  27. return ;
  28. }
  29. printf("%c\t",B->data);
  30. prio_order(B->left_child);
  31. prio_order(B->right_child);
  32. }
  33. //中序遍历
  34. void in_order(BiTreePtr B)
  35. {
  36. if( NULL==B )
  37. {
  38. return ;
  39. }
  40. in_order(B->left_child);
  41. printf("%c\t",B->data);
  42. in_order(B->right_child);
  43. }
  44. //后序遍历
  45. void post_order(BiTreePtr B)
  46. {
  47. if( NULL==B )
  48. {
  49. return ;
  50. }
  51. post_order(B->left_child);
  52. post_order(B->right_child);
  53. printf("%c\t",B->data);
  54. }

main.c 

  1. #include "bitree.h"
  2. int main(int argc, const char *argv[])
  3. {
  4. BiTreePtr B = tree_create();
  5. if( NULL==B )
  6. {
  7. printf("创建失败\n");
  8. return -1;
  9. }
  10. printf("创建成功\n");
  11. printf("先序遍历结果为:");
  12. prio_order(B);
  13. printf("\n");
  14. printf("中序遍历结果为:");
  15. in_order(B);
  16. printf("\n");
  17. printf("后序遍历结果为:");
  18. post_order(B);
  19. printf("\n");
  20. return 0;
  21. }

2.把所有的排序算法自己实现一遍

  1. #include <myhead.h>
  2. void bubble_sort(int *arr,int n) //冒泡排序
  3. {
  4. for(int i=1;i<n;i++)
  5. {
  6. int flag=0;
  7. for(int j=0;j<n-i;j++)
  8. {
  9. if(arr[j]>arr[j+1])
  10. {
  11. flag=1;
  12. int temp=arr[j];
  13. arr[j]=arr[j+1];
  14. arr[j+1]=temp;
  15. }
  16. }
  17. if(flag==0)
  18. {
  19. break;
  20. }
  21. }
  22. printf("冒泡排序成功\n");
  23. }
  24. void select_sort(int *arr, int n) //选择排序
  25. {
  26. for(int i=0;i<n;i++)
  27. {
  28. int x=i;
  29. for(int j=i+1;j<n;j++)
  30. {
  31. if(arr[x]>arr[j])
  32. {
  33. x=j;
  34. }
  35. }
  36. if(x!=i)
  37. {
  38. int temp = arr[x];
  39. arr[x]= arr[i];
  40. arr[i] = temp;
  41. }
  42. }
  43. printf("选择排序成功\n");
  44. }
  45. void putout(int *arr,int n) //输出
  46. {
  47. printf("当前元素为:");
  48. for(int i=0;i<n;i++)
  49. {
  50. printf("%d\t",arr[i]);
  51. }
  52. printf("\n");
  53. }
  54. void insert_sort(int *arr, int n) //插入排序
  55. {
  56. int i,j;
  57. for(i=1;i<n;i++)
  58. {
  59. int x=arr[i];
  60. for(j=i-1;j>=0 && arr[j]>=x;j--)
  61. {
  62. arr[j+1]=arr[j];
  63. }
  64. arr[j+1]=x;
  65. }
  66. printf("插入排序成功\n");
  67. }
  68. int part(int *arr,int low,int high)
  69. {
  70. int x=arr[low];
  71. while(high>low)
  72. {
  73. while( arr[high]>=x && high>low )
  74. {
  75. high--;
  76. }
  77. arr[low]=arr[high];
  78. while( arr[low]<=x && high>low )
  79. {
  80. low++;
  81. }
  82. arr[high]=arr[low];
  83. }
  84. arr[low]=x;
  85. return low;
  86. }
  87. void quick_sort(int *arr,int low,int high) //快速排序
  88. {
  89. if(low>=high)
  90. {
  91. return;
  92. }
  93. int mid=part(arr,low,high);
  94. quick_sort(arr,low,mid-1);
  95. quick_sort(arr,mid+1,high);
  96. printf("快速排序成功\n");
  97. }
  98. int main(int argc,const char *argv[])
  99. {
  100. int arr[]={7,8,5,2,3,0,1,9};
  101. int len =sizeof(arr)/sizeof(arr[0]);
  102. bubble_sort(arr,len);
  103. putout(arr,len);
  104. int brr[]={7,8,5,2,3,0,1,9};
  105. select_sort(brr,len);
  106. putout(brr,len);
  107. int crr[]={7,8,5,2,3,0,1,9};
  108. insert_sort(crr,len);
  109. putout(crr,len);
  110. int drr[]={7,8,5,2,3,0,1,9};
  111. quick_sort(drr,0,len-1);
  112. putout(drr,len);
  113. return 0;
  114. }

思维导图

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

闽ICP备14008679号