或者可以试试这个~感觉这个更像二叉树的遍历输出路径状态~
程序代码:
#include<stdio.h> #include<stdlib.h> #include<string.h> #define N 10 typedef struct Array { int data; unsigned visit; }Array; void input(Array* arr[] ,size_t len); void print(Array* arr[] ,size_t len); void fun(Array* arr[],size_t deep,size_t len); void freeArr(Array* arr[],size_t len); int main( void ) { Array* arr[N]; int m=5; memset(arr,0,sizeof (arr)); input(arr,m); fun(arr,0,m); freeArr(arr,m); return 0; } void input(Array* arr[],size_t len) { size_t i; if (len>N) exit(0); for (i=0;i!=len;++i) { arr[i]=(Array* )malloc(sizeof (*arr[0])); if (arr[i]==NULL||!scanf("%d",&arr[i]->data)) exit(0); } } void print(Array* arr[],size_t len) { size_t i; for (i=0;i!=len;++i) if (arr[i]->visit) printf("%-4d",arr[i]->data); puts(""); } void fun(Array* arr[],size_t deep,size_t len) { if (deep==len) { print(arr,len); return ; } arr[deep]->visit=1; fun(arr,deep+1,len); arr[deep]->visit=0; fun(arr,deep+1,len); } void freeArr(Array* arr[],size_t len) { size_t i; for (i=0;i!=len;++i) if (arr[i]!=NULL) { free(arr[i]); arr[i]=NULL; } }
[此贴子已经被作者于2017-11-19 00:23编辑过]
[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]