Boa tarde!
Na sua escrita, você já fala o que precisa.
Lista encadeada com cabeça, estrutura e ponteiro.
Primeira coisa o seu nó deve conter um "pasta raiz", alguns escolhem a pasta do usuário, outros a pasta C:... Você que define. Você precisa fazer, porque o seu programa tem que saber que ali que inicializa.
Mas antes de iniciar a lista, você deve passar a informação do caminho para a sua estrutura, e quando iniciar a lista você aponta esse caminho inicial para o nó. E você vai precisar de um ponteiro para esse tipo typedef.
A medida que a pessoa vai avançado pelo diretório, você captura a string, atualiza a estrutura e avança com nó.
Aconselho a você a pesquisar sobre lista encadeada com cabeça, e você verá como é tranquilo. Com isso, é possível fazer a consulta, caso ele queira saber quais pastas e arquivos existem naquele diretório(Tipo o DIR - Windows), dar para voltar o diretório,
pesquisando o nó anterior.
Qualquer dúvida, post o que você conseguiu fazer, que eu aponto o que falta. Confesso que é chato no inicio, mas depois fica tranquilo a lógica.