Sei sulla pagina 1di 14

Por Vluzrmos (Vagner do Carmo)

Site: http://vluzrmos.wordpress.com Twitter: @vluzrmos E-mail: vluzrmos@gmail.com

Tpicos Abordados
Estrutura de Dados em C : Structs; Lista Encadeada simples , dupla, circular; rvore Binria; Mtodos de Ordenao:

Bolha (Bubble Sort) Seleo (Selection Sort) Insero (Insertion Sort) QuickSort.

Structs
Tipo de dado composto que cada elemento de tipo

primitivo (int, float, char, composto(struct , union).


struct tipoPessoa{ char nome[100]; char email[30]; int idade; int datanascimento[3]; /* e outras informaes pertinentes*/ }

void)

ou

outro

Ex.: Uma estrutura com informaes de uma pessoa.

Structs
tipoPessoa o nome da estrutura (novo tipo de dado)
Uma variavel desse tipo poderia ser declarada assim:
struct tipoPessoa nomeDaVariavel; /*poderia ser um vetor ou ponteiro...*/

Acessando Valores (com declarao esttica) O acesso se faz com o uso do operador ponto (.). Ex.:
/* Acessando valores em declarao estatica */
nomeDaVariavel.nome; nomeDaVariavel.idade = 11;/* Atribuio de tipo primitivo */

Structs
Acessando Valores (com declarao dinmica) O acesso se faz com o uso do operador seta (->).

Ex.:
/*Aloca espao na memoria para 1 variavel tipoPessoa*/ struct tipoPessoa *nomeDaVariavel=(struct tipoPessoa*)malloc(sizeof(struct tipoPessoa)); /* Acessando valores em declarao dinamica */

nomeDaVariavel->nome;
nomeDaVariavel->idade = 11;/* Atribuio de tipo primitivo */

Structs
Retornando Structs de funes Assim como os outros tipos, tambm podemos retornar structs em nossas funes, lembrando que, em C, no existe atribuio direta entre structs ( structA = structB, pode no acontecer como esperado).

Structs
Ex. de structs como retorno de funo:
Obs.: A varivel, dentro da funo, deve ser inicializada

dinamicamente, pois, em C, ao sair da funo qualquer coisa declarada estaticamente deixa de existir.

struct tipoPessoa * minhaFuncao(void) { /*Aloca espao na memoria para 1 variavel tipoPessoa*/ struct tipoPessoa *alunox = (struct tipoPessoa*)malloc(sizeof(struct tipoPessoa)); /*Atribui uma string a nome e outra a email*/ strcpy(alunox->nome , "Seu Nome"); strcpy(alunox->email , "seuNick@meudominio.com"); alunox->idade = 25; alunox->datanascimento[0] = 17; alunox->datanascimento[1] = 6; alunox->datanascimento[2] = 1997; return alunox; } 4

Structs
Desafios:
1) Criar um programa que permita que o usurio cadastre pessoas com os dados nome, email, data de nascimento. Ao final mostrar as informaes de cada pessoa. Obs.:A quantidade de cadastros pode ser fixa (definida). 2) Criar um sistema de cadastro de alunos com nome, matrcula, endereo e um vetor de notas para 4 provas. Ao final, seu programa deve exibir todos os alunos, a media de cada aluno e a media da turma.

Listas Encadeadas
Simples Duplas Circulares

Listas Simplesmente Encadeadas


Tipo dado que cada struct contm, alm das

informaes pertinentes, um elemento que aponta para o endereo da prxima struct na sequncia. Ex.:

Listas Simplesmente Encadeadas


Ex. Cdigo em C:
/*Lista Simples*/ struct listaNums{ int num; struct listaNums * prox; } struct listaNums * insereNaListaS(struct listaNums * l, int num){ struct listaNums * novoElem;

/*Aloca espaco para 1 elemento da lista*/


novoElem = (struct listaNums *) malloc(sizeof(struct listaNums)); /*Faz que o novo elemento aponte para o topo da lista*/ novoElem->prox = l;

novoElem->num = num;
return novoElem; /*Retorna o novo elemento para que seja o novo topo da lista*/ }

Listas Simplesmente Encadeadas


void prnListaS(struct listaNums * l){ if(l){ printf(" %d ", l->num); return prnListaS(l->prox);

}
else printf("\n"); } /*Funcao main no quadro...*/

Listas Simplesmente Encadeadas


Desafios:
1) Criar uma funo para imprimir os dados da lista em ordem reversa (de baixo para o topo). 2) Criar uma funo que ao inserir um elemento na lista, ele entre na posio ordenada. 3) Criar uma funo que receba como parmetro a posio do elemento na lista e, caso o elemento exista, o exclua retornando verdadeiro ( n != 0 ).

Listas Duplamente Encadeadas


Muito parecidas com as listas simplesmente

encadeadas, elas contm mais um elemento que aponta para o elemento anterior na seqncia.

Potrebbero piacerti anche