Ponteiros C

Estou tendo um pequeno problema com um ponteiro para uma Lista encadeada eis o código:

[code]void inserir_inicio(tLista *t, int dado){
tLista t_novo;
t_novo = (tnolista *) malloc(sizeof(tnolista));
if(t_novo == NULL) return;
(t_novo)->info = dado;

if(*t == NULL){
(*t) = t_novo;
(*t)->nxt = NULL;
}else{
(t_novo)->nxt = *t;
*t = t_novo; // Erro: Warning: Assignment from incompatible pointer type;
}
}
[/code]

O arquivo de cabeçalho

typedef struct nolista{ struct nolist*nxt; int info; }tnolista; typedef tnolista *tLista;

__< Já tentei virar de tudo que é jeito.

Veja que:

tLista *t != tLista t_novo

Não é?

__< Irmão sou novato pacas em C, eu já tentei de varias formas

*t = *t_novo
t = t_novo
t = *t_novo

E o professor deu essa matéria por cima na faculdade, ele só falou: Isso é um ponteiro, assim que vc usa, tchau…
e_e ai complica pra mim

e foi mal, eu comentei na linha errada é a linha acima dela

A linha 02 deveria ser declarada assim: