Escolar Documentos
Profissional Documentos
Cultura Documentos
ENTRADA
SADA
PROCESSO
(estado inicial)
(estado final)
// do campo nome
struct TipoLista {
TipoItem Item[maxTam];
int Ultimo;
};
O campo Item o principal componente do registro TipoLista. Os itens
else {
Lista->Ultimo = Lista->Ultimo + 1;
// item inserido no final da lista
Lista->Item[Lista->Ultimo] = x;
return(1); // Item inserido com sucesso
}
}
TAD Pilha (1/4)
Existem aplicaes para listas lineares nas quais inseres,
retiradas e acessos a itens ocorrem sempre em um dos
extremos da lista. Uma pilha uma lista linear em que todas
as inseres, retiradas e geralmente todos os acessos so
feitos em apenas um extremo da lista.
Os itens em uma pilha esto colocados um sobre o outro, com
o item inserido mais recentemente no topo e o item inserido
menos recentemente no fundo.
O modelo intuitivo de uma pilha o de um monte de pratos
em uma prateleira, sendo conveniente retirar os pratos ou
Existe uma ordem linear para pilhas, que a ordem do "mais recente
para o menos recente".
Esta propriedade torna a pilha uma ferramenta ideal para processamento
de estruturas aninhadas de profundidade imprevisvel, situao em
que necessrio garantir que subestruturas mais internas sejam
processadas antes da estrutura que as contenham. A qualquer instante
uma pilha contm uma sequncia de obrigaes adiadas, cuja ordem de
remoo da pilha garante que as estruturas mais internas sero
processadas antes das estruturas mais externas.
TAD Pilha (3/4)
Estruturas aninhadas ocorrem frequentemente na prtica. Um
exemplo simples a situao em que necessrio caminhar
em um conjunto de dados e guardar uma lista de coisas a fazer
posteriormente.
O controle de chamadas de subprogramas e sintaxe de
expresses aritmticas so exemplos de estruturas aninhadas.
As pilhas ocorrem tambm em conexo com algoritmos
recurssivos e estrutura de natureza recursiva, tais como as
rvores.
Em Sntese: Pilha um caso especial de Lista Linear.
TAD Pilha (4/4)
// do campo nome
struct TipoPilha {
TipoItem Item[maxTam];
int Topo;
};
O campo Item o principal componente do registro TipoPilha. Os itens
so armazenados em um vetor de tamanho suficiente para armazenar a
pilha. J o campo Topo do registro TipoPilha contm o valor da posio
do item que est no topo da pilha. A constante maxTam define o
tamanho mximo permitido para a pilha.
else {
Pilha->Topo = Pilha->Topo + 1;
// item inserido no topo da pilha
Pilha->Item[Pilha->Topo] = x;
return(1);
}
}
TAD Fila (1/2)
Uma fila uma lista linear em que todas as inseres so realizadas em
um extremo da lista, e todas as retiradas e geralmente os acessos so
realizados no outro extremo da lista.
O modelo intuitivo de uma fila o de uma fila de espera em que as
pessoas no incio da fila so servidas primeiro e as pessoas que chegam
entram no fim da fila. Por esta razo as filas so chamadas de listas
FIFO, termo formado a partir de First-In, First-Out.
Existe uma ordem linear para filas que a ordem de chegada.
Filas so utilizadas quando desejamos processar itens de acordo com a
ordem PRIMEIRO-QUE-CHEGA, PRIMEIRO-ATENDIDO.
Sistemas operacionais utilizam filas para regular a ordem na qual tarefas
devem receber processamento e recursos devem ser alocados a
processos.
TAD Fila (2/2)
Um possvel conjunto de operaes, definido sobre um tipo abstrato
// do campo nome
struct TipoFila {
TipoItem Item[maxTam];
int Frente;
int Final;
int Tamanho;
};
O campo Item o principal componente do registro TipoFila. O
tamanho mximo do vetor circular definido pela constante maxTam.
Os outros campos do registro TipoFila contm apontadores para a parte
da frente (campo Frente) e final (campo Final) da fila. O campo
else {
// item inserido no final da fila
Fila->Item[Fila->Final] = x;
Fila->Final = Fila->Final + 1;
// se ltima posio ento volta para a primeira
// posio do vetor (vetor circular)
if (Fila->Final == maxTam)
Fila->Final = 0;
Fila->Tamanho = Fila->Tamanho + 1;
return(1); // Item inserido com sucesso
}
}