Ir para conteúdo
Fórum Script Brasil

AnaMartins

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre AnaMartins

AnaMartins's Achievements

0

Reputação

  1. Obrigada #include <stdio.h> #include <stdlib.h> // Lista Dinamica struct pessoa { int cpf; char nome[50]; int tel; }p [10]; void adicionar(); void menu(); int opcao; int LD_posicao = 0; void inicializar(); void listar(); //----------------------// //Lista DUplamente Ligada struct no { struct no *anterior; char *dado; struct no *proximo; }; void ornenar_no(char dado); void adicionar_no_final(); void adicionar_no_inicio(); void adicionar_no_meio(); struct no *inicio; struct no *novo; struct no *aux; struct no *anterior; char LDL_nome[50]; // int main() { inicializar(); opcao = 0; while(opcao !=3) { menu(); switch(opcao) { case 1: adicionar(); break; case 2: listar(); break; case 3: listar_LD(); } } return 0; } void inicializar() { } void menu() { printf("1 - Adicionar\n"); printf("2 - Listar\n"); printf("3 - AdicionarOrdenando\n"); scanf("%d", &opcao); } void adicionar() { printf("Digite o cpf:\n "); scanf("%d", &p[LD_posicao].cpf); printf("Digite o tel:\n "); scanf("%d", &p[LD_posicao].tel); printf("Digite o nome:\n "); fflush(stdin); scanf("%s",p[LD_posicao].nome); printf("recebeu antes -> %s ", p[LD_posicao].nome); ordenar_no(p[LD_posicao].nome); LD_posicao++; } void listar_LD() { int i; for(i = 0; i < LD_posicao; i++) { printf("nome: %s - ", p[i].nome); printf("cpf: %d - ", p[i].cpf); printf("tel: %d \n", p[i].tel); } } struct no *novo_no(int *dado) { struct no *n; n = malloc(sizeof(struct no)); if(!n) { printf("não consegui alocar memoria!\n"); exit(-1); } n->anterior = 0; strcpy (n->dado,&dado); printf("n->dado %s \n", n->dado); printf("dado %s \n",&dado); n->proximo = 0; return n; } void ordenar_no(char *dado) { printf("recebeu depois -> %s \n ", dado); // PROBLEMA ESTA NA LINHA 134 (novo=novo_no(*dado)) , NOVO NÃO ESTA RECEBENDO novo_no(*dado); //n->dado RECEBE O VALOR DE DADO POREM DE ALGUMA FORMA NÃO RETORNA PARA O PARAMETRO (*dado) da funcao *novo_no novo = novo_no(*dado); printf("novo-> %s \n", *novo); if(inicio == 0) { inicio = novo; printf("inicio primeiro if= %s\n",inicio); printf("inicio->dado= %s\n",inicio->dado); } else { printf("inicio->dado segundo if = %s\n", inicio->dado); printf("*dado = %s\n", *dado); // decidir aonde inserir if(strcmp (inicio->dado,dado) == 1) adicionar_no_inicio(); else { aux = inicio; while((aux->proximo != 0) && (strcmp (aux->dado,dado) == -1)) { aux = aux->proximo; } if(aux->proximo == 0 && (strcmp (dado,aux->dado) == 1)) adicionar_no_final(); else adicionar_no_meio(); } } } void adicionar_no_final() { aux->proximo = novo; novo->anterior = aux; } void adicionar_no_inicio() { novo->proximo = inicio; inicio->anterior = novo; inicio = novo; } void adicionar_no_meio() { anterior = aux->anterior; novo->proximo = aux; anterior->proximo = novo; aux->anterior = novo; novo->anterior = anterior; } void listar() { if(inicio != 0) { aux = inicio; while(aux->proximo != 0) { printf("%d -> ", aux->dado); aux = aux->proximo; } printf("%d\n", aux->dado); } else printf("Lista vazia!\n"); }
  2. Olá gostaria de ajuda com o programa abaixo, é um trabalho escolar onde devo usar lista dinâmica, lista duplamente ligada e arvore binária. // Lista Dinamica struct pessoa { int cpf; char nome[50]; int tel; }p [10]; void adicionar(); void menu(); int opcao; int LD_posicao = 0; void inicializar(); void listar(); //----------------------// //Lista DUplamente Ligada struct no { struct no *anterior; char *dado; struct no *proximo; }; struct no *novo_no(char *dado); void ornenar_no(char dado); void adicionar_no_final(); void adicionar_no_inicio(); void adicionar_no_meio(); struct no *inicio; struct no *novo; struct no *aux; struct no *anterior; char LDL_nome[50]; // int main() { inicializar(); opcao = 0; while(opcao !=3) { menu(); switch(opcao) { case 1: adicionar(); break; case 2: listar(); break; } } return 0; } void inicializar() { } void menu() { printf("1 - Adicionar\n"); printf("2 - Listar\n"); printf("3 - AdicionarOrdenando\n"); scanf("%d", &opcao); } void adicionar() { printf("Digite o cpf:\n "); scanf("%d", &p[LD_posicao].cpf); printf("Digite o tel:\n "); scanf("%d", &p[LD_posicao].tel); printf("Digite o nome:\n "); fflush(stdin); scanf("%s",p[LD_posicao].nome); printf("recebeu antes -> %s ", p[LD_posicao].nome); Gostaria de passar como parâmetro esse conteúdo "nome" (que foi alocado em uma estrutura simples) para estrutura "struct no *novo_no(char *dado)", isso é possível? Se não, como faço pra fazer uma alocação dinâmica de memoria usando uma variável/vetor do tipo char. ordenar_no(p[LD_posicao].nome); LD_posicao++; } void listar_LD() { int i; for(i = 0; i < LD_posicao; i++) { printf("nome: %s - ", p.nome); printf("cpf: %d - ", p.cpf); printf("tel: %d \n", p.tel); } } struct no *novo_no(char *dado) como posso mudar essas estutura para que ela trabalhe alocando variavel/ vetor do tipo char? { struct no *n; n = malloc(sizeof(struct no)); if(!n) { printf("não consegui alocar memoria!\n"); exit(-1); } n->anterior = 0; n->dado=dado; n->proximo = 0; printf("n->dado %s \n", n->dado); printf("dado %s \n",&dado); return n; } void ordenar_no(char *dado) { printf("recebeu depois -> %s \n ", dado); // PROBLEMA ESTA NA LINHA 134 (novo=novo_no(*dado)) , NOVO NÃO ESTA RECEBENDO novo_no(*dado); //n->dado RECEBE O VALOR DE DADO POREM DE ALGUMA FORMA NÃO RETORNA PARA O PARAMETRO (*dado) da funcao *novo_no novo = novo_no(*dado); printf("novo-> %s \n", *novo); if(inicio == 0) { inicio = novo; printf("inicio primeiro if= %s\n",inicio); printf("inicio->dado= %s\n",inicio->dado); } else { printf("inicio->dado segundo if = %s\n", inicio->dado); printf("*dado = %s\n", *dado); // decidir aonde inserir if(strcmp (inicio->dado,dado) == 1) adicionar_no_inicio(); else { aux = inicio; while((aux->proximo != 0) && (strcmp (aux->dado,dado) == -1)) { aux = aux->proximo; } if(aux->proximo == 0 && (strcmp (dado,aux->dado) == 1)) adicionar_no_final(); else adicionar_no_meio(); } } } Observação: o programa esta incompleto mesmo.
×
×
  • Criar Novo...