Buscar

Lista Encadeada Professora Jaqueline

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);
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais