Salve a tutti!

Sto battagliando con una porzione di programma che non riesco a sconfiggere.

In pratica, devo costruire una lista nella quale devo inserire dei dati. Devo, poi, cercare i dati min/max su tale lista per poi salvarli in variabili globali. Il problema è che il codice che ho pensato non funziona e non capisco minimamente il perché. Gli errori sono, nello specifico:
1 - Nella funzione di scorrimento della lista, quando cerco di fare il confronto con node->data e biggestNode->data;
2 - nel file che apro col puntatore info, che non stampa nulla anche quando modifico lo scorrimento della lista.

Ecco il programma:

Dichiarazione dell'elemento della lista
codice:
///Dichiaro e definisco il tipo Node
typedef struct Node Node;
struct Node{
    int data;
    Node *prev;
    Node *next;
};
Funzione di scorrimento della lista
codice:
///Definizione di funzione di cerca del nodo col dato più grande
void findBiggestNode(Node* node, FILE *infoFile){
    ///Alloco memoria per la variabile globale
    biggestNode = malloc(sizeof(Node));

    ///Assegno il minimo al nodo più grande
    biggestNode->data = 0;

    ///Ciclo che scorre la lista. Se l'elemento della lista considerato ha un valore più alto di biggestNode, allora memorizzo
    ///l'indirizzo dell'elemento della lista in biggestNode
    while(node != NULL){
        if(node->data > biggestNode->data){
            biggestNode = node;
            fprintf(infoFile, "Trovato nuovo valore massimo = %d\n\n", node->data);
        }
        ///Aggiorno la lista
        node = node->next;
    }
}
Costruzione della lista
codice:
///Funzione di costruzione della lista
Node *addNode(Node *oldNode){
    ///Dichiaro l'elemento della lista da collegare
    Node *newNode;

    ///Dò memoria al puntatore appena dichiarato
    newNode = malloc(sizeof(Node));

    ///Assegno un numero casuale al campo data
    newNode->data = rand() % 10;

    ///Collego l'ultimo elemento in modo che sia inserito in testa alla lista
    oldNode->prev = newNode;
    newNode->next = oldNode;
    newNode->prev = NULL;

    ///Valore di ritorno della funzione
    return newNode;
}
main() e dichiarazione della variabile globale
codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

///Dichiaro una variabile globale che conterrà il nodo col dato più grande
Node *biggestNode;

int main()
{
    int i;
    Node *node;
    FILE *info;

    ///Dò memoria al puntatore appena dichiarato
    node = malloc(sizeof(Node));
    if(node == NULL){
        printf("Error in memory allocation");
        exit(EXIT_FAILURE);
    }

    ///Costruisco la lista, composta da dieci elementi
    for(i = 0; i < 10; i++){
        node = addNode(node);
        printf("%d\n", node->data);
    }

    info = fopen("c:/users/thisPC/desktop/nodeinfo.txt", "w");
    if (info == NULL){
        printf("Error while opening file.");
        exit(EXIT_FAILURE);
    }

    ///Chiamo la funzione findBiggestNode, che aggiorna la variabile globale biggestNode
    findBiggestNode(node, info);

    fclose(info);

    return 0;
}
Mi aiutate a capire dove sbaglio?