SISTEMAS DE INFORMAÇÃO BACHARELADO 4º PERÍODO
Por: lnaasciimento • 24/3/2017 • Trabalho acadêmico • 354 Palavras (2 Páginas) • 234 Visualizações
[pic 1]
FACULDADE META
SISTEMAS DE INFORMAÇÃO BACHARELADO 4º PERÍODO
LEONARDO SILVA DO NASCIMENTO
ESTRUTURA DE DADOS I
RIO BRANCO-AC
25-09-2016
#include
#include
//criação da estrutura e definição da mesma como um tipo de variável mista.
typedef struct registro{
int matricula;
char sexo;
char nome[80], curso[50];
struct registro *p;
}registro;
//função de alocação que permite preparar o novo registro para ser o último da lista.
registro * aloca(){
registro *novo=malloc(sizeof(registro));
if(novo!=NULL){
novo->p=NULL;
return novo;
}
return novo;
}
//função de inserção: insere o novo registro sempre no começo da lista.
registro * inserir(registro *cab, registro *novo){
if(cab==NULL) return novo;
novo->p=cab;
return novo;
}
//função que realizará a listagem.
void listar(registro *cab){
registro *aux;
if(cab==NULL) printf("\nLista Vazia!\n");
aux=cab;
while(aux!=NULL){
printf("\nMatricula: %d", aux->matricula);
printf("\nNome: ");
puts(aux->nome);
printf("Curso: ");
puts(aux->curso);
printf("Sexo: ");
if(aux->sexo=='m' || aux->sexo=='M'){
printf("Masculino");
}else{
printf("Feminino");
}
printf("\n");
aux=aux->p;
}
}
//função para realizar a pesquisa.
void pesquisar(registro *cab, int busca){
registro *aux;
if(cab==NULL) printf("\nLista Vazia!\n");
aux=cab;
while(aux!=NULL){
if(aux->matricula==busca){
printf("\nMatricula: %d", aux->matricula);
printf("\nNome: ");
puts(aux->nome);
printf("Curso: ");
puts(aux->curso);
printf("Sexo: ");
if(aux->sexo=='m' || aux->sexo=='M'){
printf("Masculino");
}else{
printf("Feminino");
}
printf("\n");
}
aux=aux->p;
}
}
//função para realizar exclusão.
registro * excluir(registro *cab, int busca){
registro *aux, *ant;
if(cab==NULL){
printf("\nA lista está vazia\n");
return cab;
}
aux=cab;//aux é a variável usada para percorrer a lista (ela sempre tem o seu valor atualizado para fazer a checagem dos dados do registro).
ant=cab;//ant é a variável que guarda o valor do registro anterior, caso tenhamos que apagar um registro entre outros registros.
while(aux!=NULL){//laço para percorrer a lista.
if(aux->matricula==busca){//condição que diz quando o valor procurado é achado.
if(aux==cab){//condição que diz se o valor encontrado é o primeiro da lista.
cab=aux->p;
free(aux);
printf("\nExcluido!\n");
return cab;
}
if(aux->p!=NULL){//condição que diz que o valor encontrado está entre 2 registros.
ant->p=aux->p;
free(aux);
printf("\nExcluido!\n");
return cab;
}else{//caso não caia em nenhuma das primeiras condições o registro procurado é o último, aqui diz o que fazer nesse caso.
ant->p=NULL;
free(aux);
printf("\nExcluido!\n");
return cab;
}
}
ant=aux;//dentro do while é preciso atualizar o valor da variável 'ant' antes de atualizar o valor de 'aux'.
aux=aux->p;
}
if(aux==NULL){//aux será igual a NULL se o laço percorrer todos os registros em não cair no primeiro 'if'.
printf("\nValor Informado Nao Encontrado!\n");
return cab;
}
}
//função para realizar contagem de sexos.
void contar(registro *cab){
int f=0,m=0;//declaração de variáveis para a contagem dos sexos
registro *aux;
if(cab==NULL) printf("\nLista Vazia\n");
aux=cab;
while(aux){
if(aux->sexo=='m' || aux->sexo=='M'){
m++;
}else{
f++;
}
aux=aux->p;
}
printf("\nHomens: %d\nMulheres: %d",m,f);
printf("\n");
}
...