Vous êtes sur la page 1sur 2

typedef struct T

{
DATA data ;
struct T *left;
struct T *right;
} node;

node *makeNode (DATA *data)


{
node *temp = (node *) malloc (sizeof (node));
// temp->data = (char*)calloc (LINE_LEN, sizeof (char));
//strcpy (temp->data, data);
temp->data.rho = data->rho ;
temp->data.theta = data->theta ;
temp->data.tod = data->tod ;
temp->data.height_prim = data->height_prim ;
temp->data.height_sec = data->height_sec ;
temp->data.sic = data->sic ;
temp->data.trd = data->trd ; //added 3dec09
temp->left = NULL;
temp->right = NULL;
return temp;
}
node *addNode (DATA *data, node *root)
{
if (root == NULL)
return makeNode (data);
if (data->tod < root->data.tod)
{
root->left = addNode (data, root->left);
}
else
{
root->right = addNode (data, root->right);
}
return root;
}
node *readFile (FILE *in_fp)
{
node *root = NULL;
// char *line = (char *) calloc (LINE_LEN, sizeof (char));
DATA data ;
while (!feof (in_fp))
{
fscanf (in_fp, "%lf",&data.rho );
fscanf (in_fp, "%lf",&data.theta );
fscanf (in_fp, "%lf",&data.tod );
fscanf (in_fp, "%lf",&data.height_prim );
fscanf (in_fp, "%lf",&data.height_sec );
fscanf (in_fp, "%d",&data.sic );
fscanf (in_fp, "%d",&data.trd );
root = addNode (&data, root);
}
return root;
}
void writeFile (node *root, FILE *out_fp)
{
if (root->left != NULL)
writeFile (root->left, out_fp);
fprintf (out_fp, "%lf\t", root->data.rho);
fprintf (out_fp, "%lf\t", root->data.theta);
fprintf (out_fp, "%lf\t", root->data.tod);
fprintf (out_fp, "%lf\t", root->data.height_prim);
fprintf (out_fp, "%lf\t", root->data.height_sec);
fprintf (out_fp, "%d\t", root->data.sic);
fprintf (out_fp, "%d\n", root->data.trd);
if (root->right != NULL)
writeFile (root->right, out_fp);
}
void deleteNode(node *root)
{
if(root->left != NULL)
{
deleteNode(root) ;
}
if(root->right != NULL)
{
deleteNode(root) ;
}
if(root->left ==NULL && root->right == NULL)
{
free(root) ;
}
}
void sort (char *in, char *out)
{
FILE *in_fp = fopen (in, "r");
FILE *out_fp = fopen (out, "w");
node *root = readFile (in_fp);
writeFile (root, out_fp);
fclose (in_fp);
fclose (out_fp);
}

Vous aimerez peut-être aussi