
//层序遍历不使用的原因是在Test.c中可以被识别Queue.h包含于Test.cQueue.h在Test.c展开后不要使用部分可以找到但在Queue.c中无法识别Queue.h包含于Queue.cQueue.h在Test.c展开后不要使用部分找不到所以不要使用部分要替换为struct BinaryTreeNode* 即替换为原来的类型因为typedef会在联接时去找这个原来的类型。排序都是先搞定单趟再搞定全部插入排序void InsertSort(int* a, int n)接口为 数组首元素指针变量(整型类型)数组元素个数单趟按从小到大排列从数组的某一个数开始该数为被比较元素其下标为end表示进入比较的最后一个元素。它的后一个元素下标为end1的元素为需要比较元素。法一(下左)1.1若a[end1]a[end],就将a[end]赋给a[end1]此时a[end1]被覆盖为了防止a[end1]被覆盖丢失防止覆盖是要原先的a[end1]与a[end1]前面的元素按个比较在a[end]赋给a[end1]前将a[end1]赋给int变量tmp,此时应为tmpa[end]将end--。2或者a[end1]a[end],此时不做任何操作直接break2.此时再将 tmp赋给a[end1]法二下右1.1同上2或者a[end1]a[end]将 tmp赋给a[end1]2.单独对end-1时做判断此时tmp赋给a[end1]int end; int end;int tmpa[end1]; int tmpa[end1];if(tmpa[end]) if(tmpa[end]){ {a[end1] a[end]; a[end1] a[end];end--; end--;} }else else{ {break; a[end1] a[end];break;} }a[end1]tmp; if(end-1){a[end1] a[end];}让这个思路循环起来,end0时循环循环仅包含if和else法一将 tmp赋给a[end1]此时还有一种情况tmp是比a[end]前所有值都小end-1结束循坏法二2.单独对end-1时做判断此时tmp赋给a[end1]采用法一int end;int tmpa[end1];while(end0){if(a[end1]a[end]){a[end1] a[end];a[end]tmp;end--;}else{break;}}a[end1]tmp;整体让end从下表0开始到n-2为止建立循环如下图