Untitled
unknown
plain_text
4 years ago
5.7 kB
22
No Index
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <locale.h> // usado no código para por acentuação. #define MAXNUMREG 20 //constante definida para a quantidade de registros na lista. typedef int dados; //dando sinonimo à inteiro para lembrar que não será apenas um inteiro e sim um registro. ////////////////////////////////////////////////////////////////////////////////////// typedef struct{ // struct do registro; dados info; }REGISTRO; ////////////////////////////////////////////////////////////////////////////////////// typedef struct{ //struct lista com registros e numero de elementos. REGISTRO A[MAXNUMREG]; int numeroElementos; }LISTA; ////////////////////////////////////////////////////////////////////////////////////// void inicializarlista(LISTA *l){ // função carregando lista (*l).numeroElementos = 0; // dando um valor inicial para carregar a lista e zerando a mesma. } ///////////////////////////////////////////////////////////////////////////////////// int tamanho(LISTA *l){ //função retornar valores return ((*l).numeroElementos); // retornando valores do numero de elementos } ////////////////////////////////////////////////////////////////////////////////////// void exibirlista(LISTA *l){ // função exibir na tela int temp1; temp1=0; printf("Lista: \" "); for(temp1=0; temp1<((*l).numeroElementos); temp1++) { //repetição for mostra as info existentes na tela pelo print printf(" ["); printf("%i",(*l).A[temp1].info); printf("] "); }; printf("\"\n"); printf("\n\n Elementos: %d",(*l).numeroElementos); printf("\n\n"); } //////////////////////////////////////////////////////////////////////////////////////// int buscasequencial(LISTA *l,dados ch){ //função buscar int temp2; // aplica uma busca atravez de um contador em while(sem do;) temp2=0; while(temp2 < ((*l).numeroElementos)){ if(ch == ((*l).A[temp2].info)) return(temp2); else temp2++; } return(-1); } //////////////////////////////////////////////////////////////////////////////////////// bool inseriremlista(LISTA *l,REGISTRO reg,int i){ // função inserir(em posição especifica) int temp3; temp3=0; if((((*l).numeroElementos) == MAXNUMREG)||(i < 0)||(i > ((*l).numeroElementos))) return(false); for(temp3=((*l).numeroElementos); temp3 > i; temp3--){ // desloca todos para frente a partir do item inserido (*l).A[temp3] = (*l).A[temp3 - 1]; }; (*l).A[i] = reg; (*l).numeroElementos++; // aumenta em 1 a quantidade de elementos registrados return(true); } /////////////////////////////////////////////////////////////////////////////////////////// bool excluirelemlista(dados ch,LISTA *l){ // função excluir elemento if(((*l).numeroElementos) == 1){ (*l).numeroElementos = 0; return(true);}; int local,temp4; temp4=0; local = buscasequencial(l,ch); // utilizando busca sequencial pré-feita. if(local == -1) return false; // se não achar retorna falso for(temp4=local; temp4 < ((*l).numeroElementos)-1; temp4++){ // desloca todos para trás (*l).A[temp4] = (*l).A[temp4 + 1]; (*l).numeroElementos--; //diminui em 1 a quantidade de elementos registrados return(true); }; } //////////////////////////////////////////////////////////////////////////////////////////// void reiniciartudo(LISTA *l){ // função reiniciar (*l).numeroElementos = 0; // basta zerar novamente } int main(void ){ setlocale(LC_ALL, "Portuguese_Brazil"); char nomelista[18]; int opcao; LISTA umalistaqualquer; printf("\n\n\n---Diga um nome para sua lista(Max:18 char) \n\n ...:"); fgets(nomelista,18,stdin); inicializarlista(&umalistaqualquer); tamanho(&umalistaqualquer); do { system("cls"); printf("lista atual: %s ", nomelista); printf("\n\n"); exibirlista(&umalistaqualquer); printf("\n1 - Inserir elemento\n2 - Remover elemento\n3 - buscar posição\n4 - Resetar fila\n0 - Sair\n\nOpcao? "); scanf("%d", &opcao); switch(opcao){ case 0 : exit(1); break; case 1 : REGISTRO valors; int posis; system("cls"); printf("\n\n\n ---Qual o valor a ser registrado?\n\n..:"); scanf("%d",&valors); system("cls"); printf("Obs:substituição apenas de posições já existentes ou criar uma nova selecionando a posição 0"); printf("\n\n\n ---Em qual posição da lista deseja inserir o valor?\n\n..:"); scanf("%d",&posis); inseriremlista(&umalistaqualquer,valors,posis); break; case 2 : system("cls"); exibirlista(&umalistaqualquer); dados valorsin; printf("\n\n Qual valor deseja remover? \n\n\n ...:"); scanf("%i",&valorsin); excluirelemlista(valorsin,&umalistaqualquer); break; case 3 : system("cls"); exibirlista(&umalistaqualquer); dados bus; int loc; printf("\n\n Digite o valor para saber sua posição na lista: \n\n...:"); scanf("%d",&bus); loc=buscasequencial(&umalistaqualquer,bus); printf("Posição: %d",loc); printf("\n\n precione qualquer tecla.."); getch(); break; case 4 : reiniciartudo(&umalistaqualquer); break; } }while(1); }
Editor is loading...