Converte lista em string em c

Bom dia, eu tenho tres lista e preciso converter elas em string para entao empilhar e desempilhar. Alguem pode me dar uma luz? Segue o cod das listas

#include <stdio.h>
#include <stdlib.h>

struct lista
{
char nome;
struct lista* prox;
};
typedef struct lista Lista;

Lista* inicializa (void)
{
return NULL;
}

Lista *insere (Lista* l, char nom1)
{
Lista *novo = (Lista*) malloc(sizeof(Lista));
novo->nome = nom1;
novo->prox = l;
}

void imprime (Lista *l,Lista *l2, Lista *l3) {
Lista* p;
Lista* p2;
Lista* p3;
printf("primeiro nome: ");
for (p = l; p != NULL; p = p->prox)
{
 printf("%c", p->nome);
}
printf("\n");
printf("segundo nome: ");
for (p2 = l2; p2 != NULL; p2 = p2->prox)
{
 printf("%c", p2->nome);
}
printf("\n");
printf("terceiro nome: ");
for (p3 = l3; p3 != NULL; p3 = p3->prox)
{
 printf("%c", p3->nome);
}
printf("\n");
}

int main (void)
{
Lista *l;
Lista *l2;
Lista *l3;
l = inicializa();
l2 = inicializa();
l3 = inicializa();
l = insere(l, 'a');
l = insere(l, 'z');
l = insere(l, 'i');
l = insere(l, 'n');
l = insere(l, 'o');
l = insere(l, 't');
l = insere(l, 'n');
l = insere(l, 'a');
l2 = insere(l2, 'a');
l2 = insere(l2, 's');
l2 = insere(l2, 'u');
l2 = insere(l2, 'o');
l2 = insere(l2, 's');
l3 = insere(l3, 's');
l3 = insere(l3, 'i');
l3 = insere(l3, 'a');
l3 = insere(l3, 'r');
l3 = insere(l3, 'o');
l3 = insere(l3, 'm');
imprime(l,l2,l3);
return 0;
  1. descobre o tamanho dessa lista ( vai navegando pro proximo, somando +1 no tamanho, ate chegar em NULL)

  2. cria um array de char com teste tamanho + 1.

  3. armazena um ponteiro P pra lista. faz um loop em i desde 0 ate < tamanho, dentro do loop vc pega o ponteiro e faz array[i] = P->nome . e ai vc reatribui a este ponteiro pro proximo P = P->next;

  4. faz agora array[ tamanho ] = ‘\0’;

moleza vc tem uma string.

Oi eu criei a função para dar o retorno:

void tamanholista(Lista *lista)
{
int i;
 i = 0;
while (lista->prox != NULL)
{
   lista = lista->prox;
   i++;
}
    printf("O tamanho da lista e: %i\n", i+1);
}

agora eu crio um vetor dentro da main ?
desculpa é que estou aprendendo estrutura agora e não entendi muito o que vc disse.
esse ponteiro P tem que ser do tipo da struct Lista?
Desde já agradeço

Vamos simplificar?
Uma lista que contem o char ‘a’, como vc converte pra string “a”?

Uma string em C é um array que termina em \0

char c[] ={‘a’,’\0’};

Nesse caso o array tem 2 elementos. Poderia ter mil e ainda representar a string “a” pois C vai parar quando encontrar o \0 (chamado nul character).

Pois bem: cria uma lista com ‘a’ e gera uma string “a”. Quando vc conseguir, faça uma lista com ‘a’ e ‘b’ e ai tente gerar “ab”. A partir dai vc identifica um laço de repetição pra gerar string.

valeu, entendi, vou tentar .