[Dúvida e Erro] Struct em Lista

Boa tarde, senhores. Bem, eu estou tentando fazer um algoritmo que ele tenha uma estrutura dentro de uma lista, entretanto, não consigo manipular direito o que to tentando fazer.

Minha ideia: Criar uma estrutura cliente, criar uma lista e por fim, manipular a lista de acordo com minha estrutura. Tipo, na função de inserir, eu não faço a minima de qual forma eu manipulo, apenas de inteiro eu sei, mas numa estrutura estou quebrando a cabeça… Peço um Help a vocês. Desde já, agradeço a atenção, forte abraço.

Meu código fonte:

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

struct cliente {

char nconta[7]; //Número da conta
float saldo; //Saldo cliente
char nome[60]; //Nome cliente
char cpf[11]; //Cpf cliente
char telefone[11]; //Telefone cliente

};

typedef struct cliente Cliente;

struct lista{

Cliente info;
struct lista* prox;

};

typedef struct lista Lista;

Lista* inicializa(void){

return NULL;

}

static void insere(Cliente *i, char *cp, char *c, float *sald, char *nom, char *tele ){

i->cpf=cp;
i->nconta=c;
i->saldo=*sald;
i->nome=nom;
i->telefone=tele;

}

void imprime (Lista* x){

Lista* i;

for(i=x; x != NULL; x=x->prox)
printf("%s ",x->info);

}

int vazia (Lista* j){

return (j==NULL);

}

Lista* busca (Lista* j, Cliente x){

Lista* p;

for(p=j; p!=NULL; p=p->prox)
if(p->info.nconta==x.nconta)
return p;
else if(p==NULL)
return -2;
else if(p->info.nconta!=x.nconta)
return -1;

}



int main(){

Lista* j;
Cliente* k;

j=inicializa();
j=insere(j,k->cpf);


printf("\n");
system("Pause");

return 0;

}