Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
#include <stdio.h> #include <stdlib.h> #include <conio.h> struct no{ int info; struct no *prox; }; void pertence(struct no **inicio, int x){ struct no *p, *q; int c=0, i=1, qtd=0; p = *inicio; q = *inicio; if (p != NULL){ //validando quando for igual a zero while (p!=NULL){ if(p->info == x){ c = 1; } qtd++; p=p->prox; } qtd = qtd/2; if (c == 0){ printf("Numero nao encontrado e adcionado no meio da lista"); if((q = malloc(sizeof(struct no)))== NULL){ printf("ERRO MEMORIA"); } else{ p = *inicio; while(i<qtd){ p = p->prox; i++; } q->info = x; q->prox = p->prox; p->prox = q; } } else{ printf("Numero encontrado"); } } else { if((p = malloc(sizeof(struct no)))== NULL){ printf("ERRO MEMORIA"); } *inicio = p; p->info = x; p->prox = NULL; } } int procura(struct no *inicio, int x){ struct no *p; p = inicio; int r = 0; while(p!=NULL){ if(p->info == x){ r++; } p = p->prox; } return r; } int remova_fim(struct no **inicio){ struct no *p, *pnul; p = *inicio; pnul = *inicio; int aux; while(p->prox!=NULL){ pnul = p; p=p->prox; } pnul->prox = NULL; aux = p->info; free(p); return aux; } int maior_lista(struct no *inicio){ struct no *p; int m =0; p = inicio; if (p==NULL){ m = 0; } while(p!=NULL){ if(p->info>m){ m = p->info; p = p->prox; } } return m; } void insere_final(struct no **inicio, int x){ struct no *p, *q; if(*inicio == NULL){ } if((q = malloc(sizeof(struct no)))== NULL){ printf("ERRO MEMORIA"); } else{ p = *inicio; while(p->prox!=NULL){ p = p->prox; } q->info = x; p->prox = q; q->prox = NULL; } } int remova_inicio(struct no **inicio){ struct no *p; int valor; p = *inicio; valor = p->info; *inicio = p->prox; free(p); return valor; } void media(struct no *inicio){ struct no *p; float med=0; int cont=0; p = inicio; while (p != NULL){ med += p->info; cont++; p = p->prox; } printf("%.1f", (med/cont)); } void qtd(struct no *inicio){ struct no *p; int cont = 0; p = inicio; while (p != NULL){ cont++; p = p->prox; } printf("%d", cont); } void imprimir(struct no *inicio){ struct no *p; p = inicio; while (p != NULL){ printf("%d", p->info); p = p->prox; } } void insere_inicio(struct no **inicio, int x){ struct no *p; if((p = malloc(sizeof(struct no)))== NULL){ printf("ERRO MEMORIA"); } else{ p->info = x; p->prox = *inicio; *inicio = p; } } int main(){ struct no *inicio; int x, opcao, valor, m, fim, retorno; inicio = NULL; do{ system("cls"); printf("Lista Encadeada\n"); printf("1 - Inserir\n"); printf("2 - Imprimir\n"); printf("3 - Contar\n"); printf("4 - Media\n"); printf("5 - Remover Inicio\n"); printf("6 - Inserir no Final\n"); printf("7 - Numero Maior\n"); printf("8 - Romover o Final\n"); printf("9 - Procurar por um numero\n"); printf("10 - Procurar por um numero, se nao tiver, adiciona-lo no meio da lista\n"); printf("0 - SAIR\n"); printf("Escolha uma opcao: "); scanf("%i",&opcao); switch (opcao){ case 1: printf("Entre com o elemento a ser inserido: "); scanf("%d", &x); insere_inicio(&inicio, x); break; case 2: imprimir(inicio); getch(); break; case 3: qtd(inicio); getch(); break; case 4: media(inicio); getch(); break; case 5: valor = remova_inicio(&inicio); printf("Numero removido: %i", valor); getch(); break; case 6: printf("Entre com o elemento a ser inserido: "); scanf("%d", &x); insere_final(&inicio, x); break; case 7: m = maior_lista(inicio); printf("Maior numero: %i", m); getch(); break; case 8: fim = remova_fim(&inicio); printf("Numero Removido: %i", fim); getch(); break; case 9: printf("Digite um elemento para fazer a busca: "); scanf("%d", &x); retorno = procura(inicio, x); if ((retorno > 0)&&(retorno<=1)){ printf ("Existe %i elemento na lista;", retorno); } if (retorno > 1){ printf ("Existem %i elementos na lista;", retorno); } else{ printf("Desculpe nao existe o elemento na lista"); getch(); } case 10: printf("Digite um elemento: "); scanf("%d", &x); pertence(&inicio, x); getch(); } }while(opcao!=0); }
Compartilhar