Você está na página 1de 38

CEPEG - Centro Politcnico Geraldo Werninghaus

Curso Tcnico em Informtica

Disciplina: Estrutura de Dados


Professor: Juliano Bianchini

Pauta
Introduo
Estruturas

de dados clssicas

Pilha
Fila
Registro
Listas

encadeadas

Introduo
Estruturas

de dados e algoritmos so temas


fundamentais da cincia da computao,
sendo que so utilizados nas mais diversas
reas e com os mais diferentes propsitos;
Algoritmos manipulam dados e quando estes
dados esto organizados (dispostos) de forma
coerente caracterizam uma estrutura de
dados.

Estruturas de dados clssicas


Vetor

(array)

uma estrutura de dados linear e esttica, isto ,


compostas por um nmero finito de elementos de
um determinado tipo de dado, disposto de forma
seqencial;
Ex.: E1 E2 E3 ...
En
1

...

onde:

E1 o primeiro elemento da lista


En o ltimo elemento

Estruturas de dados clssicas


Declarao

de vetor no pascal:

<varivel> : array [<valor mnimo>..<valor mximo>]


of <tipo de dado>;
Exemplo: vetor : array [1..10] of integer;

Estruturas de dados clssicas


Matriz

uma estrutura de dados linear e esttica, tal como


o vetor, porm bidimensional. Isto , para se
armazenar e buscar um elemento, necessrio
indicar as posies (linha, coluna) onde o mesmo
se encontra:
linha
Ex.:
coluna

(matrix)

A11

A12

A13

...

A1n

A21

A22

A23

...

A2n

Am1 Am2 Am3 ...

Amn

Estruturas de dados clssicas


Declarao

de matriz no pascal:

<varivel> : array [<valor mnimo>..<valor


mximo>, <valor mnimo>..<valor mximo> ] of
<tipo de dado>;
Exemplo: matriz : array [1..3, 1..3] of integer;

Exerccio prtico
1.

Ex:

Escreva um algoritmo que armazene, no


mximo, dez valores inteiros e que permita a
visualizao do elemento de um dado ndice.
O algoritmo s deve terminar quando o valor
zero for informado como ndice;

1 6 3 52

5 20 32 62

Exerccio prtico
Escreva um algoritmo que armazene os
valores abaixo em uma matriz de 3x3 e que
possibilite mostrar o valor em uma dada
posio (linha x coluna). O algoritmo s deve
terminar quando a quando for informado zero
para linha e para a coluna (0,0);
2 5 20
Ex:
2.

60 30 11
41 25 75

Exerccio prtico
3.

Escreva um algoritmo que armazene num vetor at


dez elementos inteiros. O algoritmo deve parar de
inserir elementos quando zero for informado ou
quando o dcimo elemento for informado. No final,
mostrar os nmeros pares e suas respectivas
posies no vetor.

Exerccio prtico
4.

Escreva um algoritmo que armazene o nome e a data


de nascimentos numa matriz de 10x2 (dez linhas e
duas colunas). A primeira coluna deve guardar os
nomes e a segunda as datas. O algoritmo deve parar
de guardar dados na matriz quando o a palavra fim
for informada como nome ou quando o dcimo
elemento for informado. Ao final listar os nomes e
datas informadas;

Exerccio prtico
5.

Escreva um algoritmo que preencha um vetor, de 20


posies, com nmeros aleatrios entre 0 e 50. No
final liste os valores que foram preenchidos em cada
uma das 20 posies.

Exerccio prtico
6.

Escreva um algoritmo que preencha uma matriz 5x5


com nmeros aleatrios entre 50 e 100. No final liste
os valores que foram preenchidos em cada uma das
25 posies.

Pilha
Lista

onde os elementos que entram por


ltimo, saem primeiro (LIFO Last In, First
Out);

Exemplo: pilha de livros, pratos, etc;

implementada atravs do uma vetor;


Para implement-la so usadas variveis de
controle: topo e tamanho mximo da pilha.

Pilha - Inserir

Exemplo de algoritmo para a operao de insero de


um elemento numa pilha;
variveis:

topo (ndice que indica a ltima posio ocupada);


MAX (constante cujo valor representa o tamanho do vetor);
valor (elemento includo/retirado);

Pilha Inserir (cont.)


if topo = MAX then
begin
write ('Pilha esta cheia!');
end
else
begin
write ('Digite o valor: ');
readln (valor);
// insere na pilha
topo := topo + 1;
pilha [topo] := valor;
end; // if

Pilha Retirar
if topo = 0 then
begin
Write ('pilha vazia!');
end
else
begin
Write ('Valor retirado: ' + inttostr(pilha[topo]));
topo := topo - 1;
end;

Pilha Exerccio prtico


1.

Escreva um algoritmo que permita inserir,


retirar e consultar os elementos de uma pilha
com tamanho de 10 posies. Monte um
menu com as seguintes opes:
1 inserir
2 retirar
3 listar
4 sair do programa

Fila
Lista

onde os elementos que entram primeiro,


saem primeiro (FIFO First In, First Out);

Exemplo: fila de banco, supermercado, etc.

Tambm

implementada atravs de um vetor;


Para implement-la so usadas variveis de
controle: comeo, final e tamanho mximo da
fila.

Fila - Insero

Exemplo de algoritmo para a operao de insero de


um elemento numa fila;
variveis:

comeo (ndice que indica o primeiro elemento da fila inicializada c/ zero)


final (ndice que indica o ltimo elemento da fila - inicializada
c/ zero)
mximo (varivel cujo valor representa o tamanho do vetor)
valor (elemento a ser includo)
temp (uma varivel temporria)

Fila Insero (cont.)


procedimento inserir
INICIO
temp := final + 1
se no (temp > maximo) ento
final := temp
vetor[final]:= valor
se comeco = 0 ento
comeco := 1
fim se
seno
escreva (Fila est cheia!)
fim se
FIM;

Fila Retirar (cont.)


procedimento retirar
INCIO
se comeo <> 0 ento
valor := vetor[comeo]
se comeo = final ento
comeo := 0
final := 0
seno
comeo := comeo + 1
fim se
seno
escreva (fila vazia!)
fim se
FIM;

Fila Exerccio prtico


1.

Escreva um algoritmo que permita inserir,


retirar e consultar os elementos de uma fila
com tamanho de 10 posies. Monte um
menu com as seguintes opes:
1 inserir
2 retirar
3 listar
4 sair do programa

Fila Problema

O fila no anda!

Fila circular Insero


procedimento inserir
INICIO
temp := (final mod maximo) + 1
se temp <> comeco ento
final := temp
vetor[final]:= valor
se comeco = 0 ento
comeco := 1
fim se
seno
escreva (Fila est cheia!)
fim se
FIM;

Fila circular Retirar


procedimento retirar
INCIO
se comeo <> 0 ento
valor := vetor[comeo]
se comeo = final ento
comeo := 0
final := 0
seno
comeo := (comeo mod Maximo) + 1
fim se
seno
escreva (fila vazia!)
fim se
FIM;

Fila circular Exerccio prtico


1.

Reescreva o algoritmo do exerccio anterior


para que o mesmo seja uma fila circular;

Registros

um conjunto de dados definido pelo programador;

Ex.: lista de aniversariantes: nome, dia e ms do aniversrio;

Implementao no Pascal/Object Pascal:

Declarao :
type <nome> = record
<nome valor 1> : <tipo de dado>
<nome valor 2> : <tipo de dado>
...
end;

Registros (cont.)
Ex.:

type
aniversariante = record
nome: string (50);
dia: integer;
mes: integer;
end; // record

Registros (cont.)
Exemplo

de utilizao:

aniversariante1 : aniversariante;
Atribuio:

aniversariante1.nome := nome;
aniversariante1.dia := dia;
aniversariante1.mes := mes;

Registro Exerccio prtico


1.

Escreva um algoritmo que permita inserir,


retirar e consultar uma lista de
aniversariantes (no mximo 10). Monte um
menu com as seguintes opes:
1 inserir
2 retirar
3 listar
4 sair do programa

Lista encadeada

A memria no mais alocada de forma


seqencial;
Cada nodo da lista independente;
O relacionamento entre os nodos deve ser
explcito ( uma preocupao do
programador)
A representao dos nodos feita com
registros;

Lista encadeada (cont.)

Cada nodo deve conter, alm dos dados a


serem armazenados, apontadores para o
nodo antecessor e sucessor;
Quando aponta apenas para o sucessor ou
para o antecessor chamada de lista
encadeada;
Quando aponta para o sucessor e para o
antecessor chamada de lista duplamente
encadeada;

Lista encadeada (cont.)

Encadeamento simples:
dado

dado

Ponteiro de memria
nodo

dado

Lista encadeada (cont.)

Encadeamento duplo:
dado

dado

Ponteiro de memria
nodo

dado

Pilha

Representao de uma pilha com lista


encadeada:
dado

topo

dado

dado

Ponteiro de memria

Fila

Representao de uma fila com lista


encadeada:
dado

comeo

dado

dado

final
Ponteiros de memria

Bibliografia
PEREIRA, Silvio do Lago. Estruturas de dados
fundamentais : conceitos e aplicaes. 5 ed. So
Paulo: rica, 2001.
VILLAS, Marcos V. et al. Estruturas de dados: conceitos
e tcnicas de implementao. Rio de Janeiro: Campus,
1993.
VELOSO, Paulo A. S. et al. Estruturas de dados. 2 ed.
Rio de Janeiro: Campus, 2002.