或者可以试试这个~感觉这个更像二叉树的遍历输出路径状态~
程序代码:
程序代码:
#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]




~
,这两天没看论坛,结果今天一上来才看见大佬写的代码,实在感动,我先看看~
