Andrei222 0 Denunciar post Postado Junho 19, 2015 O Programa é uma lista encadeada aonde o campo info é um ponteiro para um TAD,mas não ta funcionando a inserção e a impresão. #include<stdio.h> #include<stdlib.h> typedef struct cliente { int CRM; }Cliente; typedef struct no{ Cliente*info; struct no*prox; }Lista; void inicial(Cliente*p){ p=NULL; } void CadastrarCliente(Cliente*p){ printf("Entre com o Identificador\n"); scanf("%d",&p->CRM); } Lista*criar (void) {Lista*p=malloc(sizeof(Lista)); p->info=NULL; return p; } void inseriri(Lista*p,Cliente*c1){ Cliente*novo=malloc(sizeof(Cliente)); Lista*l=malloc(sizeof(Lista)); novo->CRM=c1->CRM; l->info=novo; l->prox=p; p=l; } // do while void imprimi(Lista*p){ Lista*l; Cliente*c1; for(l=p;l!=NULL;l=l->prox) printf("%d",l->info->CRM); } int main(){ Cliente c1; Lista *p; p=criar(); CadastrarCliente(&c1); inseriri(p,&c1); iprimi(p); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 19, 2015 Português é bem-vindo. Pode ser código, mas passa-se mais tempo lendo do que escrevendo código. #include <stdio.h> #include <stdlib.h> #define ERROR_MSG(msg,line_no) printf("[ERRO]%s(%s@%d)\n", msg, __FILE__, line_no) typedef struct cliente { int CRM; } Cliente; typedef struct no{ int CRM; struct no * proximo; } No; /* Realiza a pesquisa pelo crm informado. * Caso o crm não seja encontrado, retorna NULL e define ultimo_no como a cauda da lista, * para facilitar a inserção do novo cliente. * Caso o crm seja encontrado, retorna o endereço de memória do nó que o contém. */ No * pesquisar_crm(No * lista, No ** ultimo_no, int crm) { No * tmp = lista; while (tmp != NULL) { if (tmp->CRM == crm) return tmp; (*ultimo_no) = tmp; tmp = tmp->proximo; } return NULL; } No * cadastrar_cliente(No * lista) { int tmp_crm; printf("Informe o CRM: "); scanf("%d", &tmp_crm); No * novo_cliente; No * inicio_lista = lista; if (!lista) { inicio_lista = malloc(sizeof(No)); if (!inicio_lista) { ERROR_MSG("Alocação de memória", __LINE__-2); } else { inicio_lista->CRM = tmp_crm; inicio_lista->proximo = NULL; } } else { No * ultimo_no; No * pos = pesquisar_crm(inicio_lista, &ultimo_no, tmp_crm); if (pos != NULL) { puts("Cliente já existente."); } else { novo_cliente = malloc(sizeof(No)); if (!novo_cliente) { ERROR_MSG("Alocação de memória", __LINE__-2); } else { novo_cliente->CRM = tmp_crm; novo_cliente->proximo = NULL; ultimo_no->proximo = novo_cliente; } } } return inicio_lista; } void imprimir(No * lista) { for(No * tmp=lista; tmp != NULL; tmp=tmp->proximo) { printf("CRM: %d\n", tmp->CRM); } } int main(void){ No * lista = NULL; for(int i = 0; i < 5; i++) lista = cadastrar_cliente(lista); imprimir(lista); free(lista); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites