该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
用的是devcpp4990
#include
#include
#include
#include
//#define var 30
//#define no_of_1 10200
#define NULL 0
FILE *fp;
struct tree
{
long data;
struct tree *Rlink;
struct tree *Llink;
};
VOID ptree(struct tree *T)
{
if(T)
{
ptree(T->Llink);
fprintf(fp,"%d ",T->data);
ptree(T->Rlink);
}
}
void main(int argc,char *argv[])
{
int var,no_of_1;//add
int len,cnt,place_can=0,double_check=0,doturthvct;
long i,index;
long num;
BOOL *pArr;
char c;
struct tree *root,*current,*temp;
printf("the number of varible is");
scanf("%d",&var);
printf("the number of onset is");
scanf("%d",&no_of_1);
root=new struct tree;
root->Llink=NULL;
root->Rlink=NULL;
current=root;
argc=2;
srand( (unsigned)time( NULL ) );//
len=var;
cnt=no_of_1; // COUNT OF ONE
num=1<
// fp=fopen("test_30_10200","w");
fp = fopen(argv[1], "w");
fprintf(fp,".i %d \n",var);
fprintf(fp,".o 1 \n");
fprintf(fp,".M %d \n",no_of_1);
printf("Output file format is Turth vector or Onset? 'T' for Turth Vector 'O'for Onset.\n");
c=getchar();
if (c=='T'||c=='t')
doturthvct=1;
else
doturthvct=0;
if (doturthvct)
{
pArr=(BOOL*)malloc(num*sizeof(BOOL));
for(i=0; i
{
pArr[i]=FALSE;
}
//set
i=0;
while (1)
{
index=rand()%num;//???
if (!pArr[index])
{
pArr[index]=TRUE;
i++;
if (cnt==i)
{
break;//jump out the loop
}
}
}
//print out
for(i=0; i
{
if(pArr[i])
{
fprintf(fp,"%d,",1);
}
else
{
fprintf(fp,"%d,",0);
}
}
free(pArr);
}
else
{
srand( (unsigned)time( NULL ) );
index=num/2;
root->data=index;
printf("root da is %d ",index);
//fprintf(fp,"%d ",index);
for (i=1;i
{
do {
index=rand()%num;
current=root;
double_check=0;
if (index==current->data)
{
double_check=1;
}
else if (index!=current->data )
{
while(1)
{
if (index==current->data)
{
double_check=1;
break;
}
else if (index < current->data)
{
if (current->Llink!=NULL)
{
if(index==current->data)
{
double_check=1;
}
else
{
if (index>current->data)
{
current=current->Rlink;
}
else
current=current->Llink;
}
}
else if (current->Llink==NULL && double_check==0)//(current->Llink==NULL)
{
temp=new struct tree;
current->Llink=temp;
current=temp;
current->Llink=NULL;
current->Rlink=NULL;
current->data=index;
double_check=0;
// fprintf(fp,"%d ",current->data);
break;
}
}
else if (index > current->data && double_check==0)//index>temp->data;
{
if (current->Rlink!=NULL)
{
if(index==current->data)
{
double_check=1;
}
else
{
if (index>current->data)
{
current=current->Rlink;
}
else
current=current->Llink;
}
}
else if (current->Rlink==NULL)
{
temp=new struct tree;
current->Rlink=temp;
current=temp;
current->Llink=NULL;
current->Rlink=NULL;
current->data=index;
double_check=0;
// fprintf(fp,"%d ",current->data);
break;
}
}
}
}
} while(double_check==1);
}
}
if (!doturthvct)
{
current=root;
ptree(current);
}
fclose(fp);
c=getchar();
}