Aulas em laboratório na Faculadade...
Para as funções abaixo, você deve utilizar o cabeçálho abaixo:
typedef enum bool{false,true}Boolean;
struct lista{
int info;
struct lista *prox;
};
typedef struct lista* def_lista;
//inicio das funções
int menu(void)
{ system("cls");
int opcao;
printf("1 - Inserir no inicio
2 - Inserir no final
");
printf("3 - Busca por valor
4 - Imprimir
");
printf("5 - Remove valor
6 - Limpa toda a lista
");
printf("7 - Sair
Escolha uma opcao acima: ");
scanf("%d", &opcao);
return opcao;
}
def_lista inicializa(void)
{
return NULL;
}
def_lista cria_no(int nro)
{
def_lista no =(def_lista)malloc(sizeof(struct lista));
no->info = nro;
no->prox = NULL;
return no;
}
void insere_inicio(def_lista *Lista, int nro)
{
def_lista no =cria_no( nro);
if(*Lista != NULL)
no->prox = *Lista;
*Lista = no;
}
void insere_final(def_lista *Lista, int nro)
{
def_lista no, aux;
no = cria_no(nro);
if(*Lista == NULL)
*Lista = no;
else{
aux = *Lista;
while(aux->prox != NULL)
aux = aux->prox;
aux->prox = no;
}
}
Boolean busca(def_lista Lista, int nro)
{
def_lista aux;
for(aux = Lista; aux != NULL; aux = aux->prox )
if(aux->info == nro)
return true;
return false;
}
void imprime_lista(def_lista Lista)
{
def_lista aux;
printf("
Lista em geral
");
for(aux = Lista; aux != NULL; aux = aux->prox)
printf("%d ", aux->info);
printf("
");
}
void libera(def_lista Lista)
{
def_lista t, aux = Lista;
while(aux != NULL)
{
t = aux->prox;
free(aux);
aux = t;
}
}
Boolean remove_no(def_lista *Lista, int nro)
{
def_lista aux = *Lista;
def_lista ant = NULL;
while(aux != NULL && aux->info != nro)
{
ant = aux;
aux = aux->prox;
}
if(aux == NULL)
return false;
else{
if(ant == NULL)
*Lista = aux->prox;
else
ant->prox = aux->prox;
free(aux);
return true;
}
}