Untitled
unknown
plain_text
5 years ago
5.7 kB
25
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...