Ir ao conteúdo
  • Cadastre-se

Maisa_fernanda

Membro Júnior
  • Posts

    5
  • Cadastrado em

  • Última visita

Reputação

4

1 Seguidor

  1. @devair1010 Minha professora pediu isso. Eu também não vi nenhum erro, mas ela pediu, então pensei em pedir outras opiniões.
  2. Quem descobrir o erro me explique por gentileza o que está errado. /*========================================================================== LISTA ENCADEADA ==========================================================================*/ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <conio.h> //struct para o nodo da lista encadeada //Neste modo dev\e ter um ponteiro que aponta para o tipo da lista struct dados_produto { int cod_produto; char nome[20]; float valor; struct dados_produto *prox; //ponteiro para o pr�ximo modo }; //variaveis globais e prototipos das funcoes int codigo=0; struct dados_produto *raiz; //para o ponto de partida da lista struct dados_produto *paux; //ponteiro auxiliar void incluir(); void incluir_fim(); void incluir_ordenado(); void excluir(); void listar(); int main() { char opcao; raiz = NULL; //raiz recebe nulo no inicio do programa do { system("cls"); printf(" MENU\n"); printf("\nI - inclui elementos no INICIO da lista"); printf("\nM - inclui elementos no FIM da lista"); printf("\nO - inclui elementos no ORDENADOS da lista"); printf("\nE - exclui elementos da lista"); printf("\nL - listagem"); printf("\nS - sair\n\n"); printf("\nDigite a opcao: "); opcao = getch(); opcao = toupper(opcao); switch(opcao) { case 'I': incluir(); break; case 'M': incluir_fim(); break; case 'O': incluir_ordenado(); break; case 'E': excluir(); break; case 'L': listar(); break; case 'S': break; default: printf("opcao invalida"); getch(); //parada de tela } }while(opcao != 'S'); return 0; }// main /*------------------------------------------------------------------------ Este procedimento do inclusao esta incluindo elementos no inicio, sem considerar se o valor a ser incluido j� existe ou nao, simplesmente inclui no inicio, entao eh um procedimento de inclusao de +*********+ | PILHA | +*********+ -------------------------------------------------------------------------*/ void incluir() { struct dados_produto *pnovo; system("cls"); printf("=============================================================\n"); printf(" PROCEDIMENTO DE INCLUSAO NO INICIO DA LISTA\n"); printf("=============================================================\n"); pnovo = (struct dados_produto*) malloc(sizeof(struct dados_produto));//parte mais importante printf("\nDigite o nome: "); fflush(stdin); //limpeza de buffer gets(pnovo->nome); printf("\nDidite o valor: "); fflush(stdin); //limpeza de buffer scanf("%f",&pnovo->valor); pnovo->cod_produto = ++codigo; //codigo auto inclementavel //faz o ponteiro de novo nodo apontar para onde a raiz pnovo->prox = raiz; //faz a raiz apontar para este novo elemento raiz = pnovo; printf("\n ELEMENTO INCLUIDO"); getch(); } /*------------------------------------------------------------------------ Este procedimento do inclusao esta incluindo elementos no fim, sem considerar se o valor a ser incluido j� existe ou nao, simplesmente inclui no fim, entao eh um procedimento de inclusao de +*********+ | FILA | +*********+ -------------------------------------------------------------------------*/ void incluir_fim() { struct dados_produto *pnovo, *pant; system("cls"); printf("=============================================================\n"); printf(" PROCEDIMENTO DE INCLUSAO NO FIM DA LISTA\n"); printf("=============================================================\n"); pnovo = (struct dados_produto*) malloc(sizeof(struct dados_produto));//parte mais importante printf("\nDigite o nome: "); fflush(stdin); //limpeza de buffer gets(pnovo->nome); printf("\nDidite o valor: "); fflush(stdin); //limpeza de buffer scanf("%f",&pnovo->valor); pnovo->cod_produto = ++codigo; //codigo auto inclementavel pnovo->prox = NULL; //porque este ser� o ultimo elemento da lista if (raiz == NULL) //faz a raiz apontar para o proximo elemento raiz = pnovo; else { paux = raiz; while(paux->prox != NULL) { paux=paux->prox; } paux->prox = pnovo; } printf("\n ELEMENTO INCLUIDO"); getch(); } /*------------------------------------------------------------------------ Este procedimento do inclusao esta incluindo elementos ordenados por nome, entao o elemento pode ser incluido no inicio, no meio ou no fim , pois o criterio de insercao e definido pelo nome (Externo a Estrutura de Dados), entao eh um procedimento de inclusao de +*********+ | PILHA | +*********+ -------------------------------------------------------------------------*/ void incluir_ordenado() { } void excluir() { int cod_aux; struct dados_produto *pant; system("cls"); printf("=============================================================\n"); printf(" PROCEDIMENTO DE EXCLUSAO\n"); printf("=============================================================\n"); printf("\n Informe o codigo a excluir: "); fflush(stdin); scanf("%d",&cod_aux); pant = NULL; paux = raiz; while ((paux != NULL) && (paux->cod_produto != cod_aux)) { pant = paux; paux = paux->prox; } if (paux == NULL) printf("\nCodigo '%d' nao existe na linha",cod_aux); else { if (paux == NULL)//significa que eh o primeiro elemento raiz = paux->prox; else pant->prox = paux->prox; free(paux); //libera memoria que o nodo ocupava printf("\nelemento excluido"); } getch(); } void listar() { system("cls"); printf("=============================================================\n"); printf(" PROCEDIMENTO DE LISTAGEM\n"); printf("=============================================================\n"); printf("\nEnder da raiz....: %p",raiz); if (raiz == NULL) { printf("\nLISTA VAZIA"); } else { paux = raiz; while (paux != NULL) { printf("\n-------------------------------------------------"); printf("\nEnder deste nodo..: %p",paux); printf("\ncod_produto.......: %d",paux->cod_produto); printf("\nnome..............: %s",paux->nome); printf("\nvalor.............: %f",paux->valor); printf("\nEnder do prox.....: %p",paux->prox); paux = paux->prox;//assume o endereco do proximo nodo } } getch(); //parada em tela }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!