Professional Documents
Culture Documents
Listas Lineares
Listas Lineares
Listas Lineares
2)
3)
4)
5)
1)
Implementao de Listas
por meio de arranjos
1
1000
typedef struct {
TipoItem Item[MaxTam];
Apontador Primeiro, Ultimo;
} TipoLista;
typedef struct {
TipoChave Chave;
/* outros componentes */
} TipoItem;
#include <sys/time.h>
#include <stdio.h>
#include <stdlib.h>
#define InicioArranjo
#define MaxTam
/* Retira */
Algoritmos e Estrutura de Dados II
Desvantagens:
Vantagem:
NULL
typedef struct {
Apontador Primeiro, Ultimo;
} TipoLista;
typedef struct {
int Chave;
/* outros componentes */
} TipoItem;
Desvantagem:
Vantagens:
Chave : 1..999;
NotaFinal : 0..10;
Opcao : array[1. .3] of 1. .7;
Primeiro refinamento:
/* programa Vestibular */
void main()
{
int Nota;
ordena os registros pelo campo NotaFinal ;
for (Nota := 10; Nota >=0; Nota--) {
while (houver registro com mesma nota) {
if (existe vaga em um dos cursos de opcao do
candidato)
insere registro no conjunto de aprovados
else insere registro no conjunto de reprovados;
}
}
imprime aprovados por curso ;
imprime reprovados;
}
NULL
NULL
/* programa Vestibular */
Void main()
{
int Nota;
TipoChave Chave;
NOpcoes
NCursos
FALSE
TRUE
3
7
0
1
#define
#define
#define
#define
NOpcoes
NCursos
FALSE
TRUE
3
7
0
1
long Vagas[NCursos];
short Passou;
long i, Nota;
TipoItem Registro;
TipoLista Classificacao[11];
TipoLista Aprovados[NCursos];
TipoLista Reprovados;
#define
#define
#define
#define
FLVazia(&Aprovados[i-1]);
LeRegistro(&Registro);
while (Registro.Chave != 0)
{
Insere(Registro, &Classificacao[Registro.NotaFinal]);
LeRegistro(&Registro);
}
FLVazia(&Reprovados);
getchar();
Pilha
5)
4)
3)
2)
1)
Conjunto de operaes:
TAD Pilhas
typedef struct {
TipoItem Item[MaxTam];
Apontador Topo;
} TipoPilha;
typedef struct {
Apontador Fundo, Topo;
int Tamanho;
} TipoPilha;
#define max 10
if (Vazia(*Pilha))
{ printf(" Erro
lista vazia\n");
return;
}
q = Pilha->Topo;
Pilha->Topo = q->Prox;
*Item = q->Prox->Item;
free(q);
Pilha->Tamanho--;
} /* Desempilha */
UFMG.
DCC
nn#x#ele!\ Sera
et# h#um
70
vamos estourar
saltar de linha,
ET - Implementao
'#'
'\\'
'*'
'~'
#define
#define
#define
#define
typedef struct {
TipoItem Item[MaxTam];
Apontador Topo;
} TipoPilha;
typedef struct {
/* --- outros componentes --- */
TipoChave Chave;
} TipoItem;
CancelaCarater
CancelaLinha
SaltaLinha
MarcaEof
70
#define MaxTam
#include <stdio.h>
ET - Implementao
ET - Implementao
ET - Implementao
ET - Implementao
FPVazia(&Pilhaux);
while (!Vazia(*Pilha))
{
Desempilha(Pilha, &x); Empilha(x, &Pilhaux);
}
while (!Vazia(Pilhaux))
{
Desempilha(&Pilhaux, &x); putchar(x.Chave);
}
putchar('\n');
} /* Imprime */
ET - Implementao
Fila
Fila
Conjunto de operaes:
TAD Filas
typedef struct {
TipoItem Item[MaxTam];
Apontador Frente, Tras;
} TipoFila;
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#define MaxTam 1000
#include <stdlib.h>
#include <sys/time.h>
#include <stdio.h>
#define max 10
4)
5)
3)
2)
a)
b)
1)
Exercicios