Ir para conteúdo
Fórum Script Brasil
  • 0

LISTA ENCADEADA


Lucas Mello

Pergunta

Pessoal, estou com problemas para rodar esse programa. O compilador não apresenta erro mas quando é executada, o terminal encerra a execução no momento em que a função de inserção é chamada


 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
 
typedef struct{
    char nome[10];
    int codigo;
    float preço;
}Tproduto;
 
typedef struct lista {
    Tproduto produto;
    struct listaprox;
}TLista;
 
typedef TListaPLista;
 
TListainicializa_lista(){
    return NULL;
}
 
PLista Insere_ord (PLista lTproduto dado){
    PLista novo;
    PLista ant = NULL;
    PLista ptaux = l;
 
    novo = (TLista*) malloc(sizeof(TLista));
 
    novo->produto = dado;
 
 while ((ptaux!=NULL) && (ptaux->produto.codigo)< dado.codigo){
    ant = ptaux;
    ptaux = ptaux->prox;
}
 
if (ant == NULL){
    novo->prox = l;
    l = novo;
}
else{
    novo->prox = ant->prox;
    ant->prox = novo;
}
return l;
}
 
float busca_produto (PLista listaint v){
    PLista p;
    for (p=listap!=NULLp=p->prox)
         if (p->produto.codigo == v)
          return p->produto.preço;
    printf("produto não encontrado\n");
    return 0;
}
 
PLista retira (PLista listachar v){
    PLista ant = NULL;
    PLista p;
/* procura elemento na lista, guardando anterior */
    for (p=lista;p!=NULL && strcmp(v,lista->produto.nome)!=0p = p->prox)
     ant = p;
/* verifica se achou elemento */
    if (p == NULL)
        return lista/* n�o achou: retorna lista original */
/* retira elemento */
    if (ant == NULL)
/* retira elemento do inicio */
    lista = p->prox;
else
/* retira elemento do meio da lista */
    ant->prox = p->prox;
    free(p);
    return lista;
}
 
void imprime (PLista lista){
    PLista p/* vari�vel auxiliar para percorrer a lista */
    for (p = listap != NULLp = p->prox)
        printf("nome        codigo        preço\n");
 
        printf(" %s        %d          R$%.2f"p->produto.nomep->produto.codigop->produto.preço);
        printf("\n");
}
 
void Destroi_lista (PLista lista){
    PLista p = listat;
    while (p != NULL){
        t = p->prox/* guarda refer�ncia para o pr�ximo elemento*/
        free(p);
        p = t/* faz p apontar para o pr�ximo */
    }
}
 
int main(){
    PLista LISTA;
    Tproduto produto;
    char namenome_excluir;
    int codigod=0consulta;
    float preço;
 
    while(d!=-1){
        printf("digite o nome do produto\n");
        scanf(" %s" , &name);
        printf("digite o codigo do produto\n");
        scanf(" %d" , &codigo);
        printf("entre com o preço do produto\n");
        scanf(" %.2f" , &preço);
 
        strcpy(produto.nome,name);
        produto.codigo = codigo;
        produto.preço = preço;
 
       LISTA = Insere_ord(&LISTAproduto);
 
        printf("deseja continuar inserindo?\ndigite -1 para sair\n");
        scanf("%d", &d);
    }


 
    printf("digite o codigo do produto para consultar seu preço\n");
    scanf("%d" , &consulta);
 
    float encontrado;
    encontrado = busca_produto(LISTAconsulta);
    printf("o preço do produto procurado é **  %.2f\n"encontrado);
 
    printf("digite o nome do produto que deseja excluir\n");
    gets(nome_excluir);
 
    retira(LISTAnome_excluir);
 
    Destroi_lista;
 
    return 0;
 
}
















 
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...