Sei sulla pagina 1di 87

ESTRUTURAS DE DADOS EM C

Estruturas lineares
L I S TA S E S T T I C A S

Prof. Almir David Valente Santiago

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
AGENDA

1 DEFINIO.
2 T I P O S D E O P E R A E S E M U M A L I S TA .
3 INSERO COMUM.
4 INSERO EM UMA POSIO ESPECFICA.
5 BUSCA.
6 REMOO.

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
DEFINIO
include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#define MAX 10

int lista[MAX];
int tamanho=0;

Frente da lista Fundo da lista


(FRONT) (BACK)

0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
DEFINIO
include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#define MAX10

int lista[MAX];
int tamanho=0;

Frente da lista ESTTICA = CONTGUA Fundo da lista


(FRONT) (BACK)

0 1 2 3 4 5 6 7 8 9
0xFBA 0xFBB 0xFBC 0xFBD 0xFBE 0xFBF 0xFC1 0xFC2 0xFC3 0xFC4

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
T I P O S D E O P E R A E S E M U M A L I S TA

Insero comum.

Insero em uma posio especfica.

Busca.

Remoo de uma posio especfica (por ndice).

Remoo de um elemento especfico (por valor).

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS

INSERO COMUM

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO COMUM

Tamanho = 0
Lista vazia! 0 1 2 3 4 5 6 7 8 9

Este o tipo mais simples de insero em uma lista!

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO COMUM

Tamanho = 0
Lista vazia! 0 1 2 3 4 5 6 7 8 9 Insere o elemento 3

3
Tamanho = 1
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO COMUM

Tamanho = 0
Lista vazia! 0 1 2 3 4 5 6 7 8 9

3
Tamanho = 1
0 1 2 3 4 5 6 7 8 9 Insere o elemento 7

3 7
Tamanho = 2
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO COMUM

Tamanho = 0
Lista vazia! 0 1 2 3 4 5 6 7 8 9

3
Tamanho = 1
0 1 2 3 4 5 6 7 8 9

3 7
Tamanho = 2
0 1 2 3 4 5 6 7 8 9 Insere o elemento 14

3 7 14
Tamanho = 3
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO COMUM

Tamanho = 0
Lista vazia! 0 1 2 3 4 5 6 7 8 9

3
Tamanho = 1
0 1 2 3 4 5 6 7 8 9

3 7
Tamanho = 2
0 1 2 3 4 5 6 7 8 9

3 7 14
Tamanho = 3
0 1 2 3 4 5 6 7 8 9 Insere o elemento 25

3 7 14 25
Tamanho = 4
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO COMUM

3 7 14 25 50
Tamanho = 4 Agora a insero do elemento 50.
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO COMUM

3 7 14 25 50
Tamanho = 4
0 1 2 3 4 5 6 7 8 9

Antes de inserir o elemento 50, perceba que a


insero comum sempre se d pelo fundo da lista.

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO COMUM

3 7 14 25 50
Tamanho = 4
0 1 2 3 4 5 6 7 8 9

E que o ndice da lista onde ocorre a insero comum


sempre o nmero que representa o seu tamanho atual.

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO COMUM

3 7 14 25 50
Tamanho = 4
0 1 2 3 4 5 6 7 8 9

Portanto, o cdigo da insero comum pode ser representado como ilustrado abaixo:

lista[tamanho] = 50;

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO COMUM

3 7 14 25 50
Tamanho = 5
0 1 2 3 4 5 6 7 8 9

Aps inserido o elemento 50, perceba que o prximo ndice vazio


tem o mesmo nmero que representa o novo tamanho da lista.

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO COMUM

Considere uma lista com os elementos abaixo.

91 3 42 7 14 9 68 25 11 50
Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO COMUM

Considere uma lista com os elementos abaixo.

91 3 42 7 14 9 68 25 11 50 possvel inserir o
Tamanho = 10
0 1 2 3 4 5 6 7 8 9 elemento 70 na lista?

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO COMUM

A lista est cheia! Portanto, no pode haver mais inseres.

91 3 42 7 14 9 68 25 11 50
Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO COMUM
include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#define MAX 10

int lista[MAX];

A lista alcana o seu limite quando MAX==tamanho

91 3 42 7 14 9 68 25 11 50
Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO COMUM

int inserir(int valor)


{
//verifica se lista est cheia
if(tamanho==MAX) {
puts("Nao pode inserir! Lista cheia!");
return 0; // equivale a FALSE
}
lista[tamanho] = valor; // insere com sucesso
++tamanho; // incrementa o tamanho da lista
return 1; // equivale a TRUE
}

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS

INSERO EM UMA
POSIO ESPECFICA

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO EM UMA POSIO ESPECFICA

3 7 14 25
Tamanho = 4
0 1 2 3 4 5 6 7 8 9

Este tipo de insero permite inserir


em qualquer posio VLIDA da lista!

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO EM UMA POSIO ESPECFICA

3 7 14 25
Tamanho = 4
0 1 2 3 4 5 6 7 8 9 Insere o elemento 9 na posio 3

3 7 14 9 25
Tamanho = 5
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO EM UMA POSIO ESPECFICA

3 7 14 25
Tamanho = 4
0 1 2 3 4 5 6 7 8 9 Insere o elemento 9 na posio 3

3 7 14 9 25
Tamanho = 5
0 1 2 3 4 5 6 7 8 9 Insere o elemento 42 na posio 1

3 42 7 14 9 25
Tamanho = 6
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO EM UMA POSIO ESPECFICA

3 7 14 25
Tamanho = 4
0 1 2 3 4 5 6 7 8 9 Insere o elemento 9 na posio 3

3 7 14 9 25
Tamanho = 5
0 1 2 3 4 5 6 7 8 9 Insere o elemento 42 na posio 1

3 42 7 14 9 25
Tamanho = 6
0 1 2 3 4 5 6 7 8 9 Insere o elemento 91 na posio 0

91 3 42 7 14 9 25
Tamanho = 7
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO EM UMA POSIO ESPECFICA

3 7 14 25
Tamanho = 4
0 1 2 3 4 5 6 7 8 9

3 7 14 9 25
Tamanho = 5
0 1 2 3 4 5 6 7 8 9

3 42 7 14 9 25
Tamanho = 6
0 1 2 3 4 5 6 7 8 9

91 3 42 7 14 9 25
Tamanho = 7
0 1 2 3 4 5 6 7 8 9 Insere o elemento 68 na posio 6

91 3 42 7 14 9 68 25
Tamanho = 8
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO EM UMA POSIO ESPECFICA

91 3 42 7 14 9 68 25 11?
Tamanho = 8 Posso inserir o elemento 11 na posio 9?
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO EM UMA POSIO ESPECFICA

91 3 42 7 14 9 68 25 11?
Tamanho = 8 Posso inserir o elemento 11 na posio 9?
0 1 2 3 4 5 6 7 8 9

91 3 42 7 14 9 68 25 11?
Tamanho = 8 E na posio 8?
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO EM UMA POSIO ESPECFICA

91 3 42 7 14 9 68 25 X
Tamanho = 8 NO posso inserir na posio 9!
0 1 2 3 4 5 6 7 8 9

91 3 42 7 14 9 68 25 11?
Tamanho = 8 E na posio 8?
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO EM UMA POSIO ESPECFICA

91 3 42 7 14 9 68 25 X
Tamanho = 8 NO posso inserir na posio 9!
0 1 2 3 4 5 6 7 8 9

91 3 42 7 14 9 68 25 11
Tamanho = 8 Na posio 8 perfeitamente possvel!
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO EM UMA POSIO ESPECFICA

A posio mxima para a insero em uma lista sempre


o nmero da posio que representa o seu tamanho!

91 3 42 7 14 9 68 25
Tamanho = 8
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO EM UMA POSIO ESPECFICA

91 3 42 7 14 9 68 25
Tamanho = 8
0 1 2 3 4 5 6 7 8 9

E a posio mnima sempre 0 (zero)!

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
INSERO EM UMA POSIO ESPECFICA
int inserir_em_pos(int valor, int index) {
//verifica se lista est cheia
if(tamanho==MAX){
puts("Nao pode inserir! Lista cheia!");
return 0; // equivale a FALSE
}
// verifica se o ndice vlido
if(index < 0 || index > tamanho){
puts("Nao pode inserir! Indice invalido!");
return 0; // equivale a FALSE
}
int i;
for(i=tamanho; i!=index; --i)
lista[i] = lista[i-1];
lista[i] = valor;
++tamanho;
return 1; // equivale a TRUE
}
Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS

BUSCA

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 68 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

68?

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 68 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

68?

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 68 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

68?

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 68 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

68?

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 68 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

68?

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 68 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

68?

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 68 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

68?

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 68 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

68?

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 68 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

68?

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 68 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

68?

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 68 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

68?

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 68 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

68?

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 68 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

68?

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 68 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

68?

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 68 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

68?

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 68 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Encontrou o elemento

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 33 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

33?

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 33 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

33?

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 33 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

33?

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 33 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

33?

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 33 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

...
91 3 42 7 14 9 68 25 11 50 Buscar o elemento 33 na lista.
Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

33?

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 33 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

33?

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 33 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

33?

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 33 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

33?

91 3 42 7 14 9 68 25 11 50 Buscar o elemento 33 na lista.


Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

Alcanou o fim da lista!

91 3 42 7 14 9 68 25 11 50
Tamanho = 10
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

Alcanou o fim da lista!

91 3 42 7 14 9 68 25 11 50
Tamanho = 10 No encontrou o elemento 33!
0 1 2 3 4 5 6 7 8 9

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
BUSCA

int busca(int valor){


int i;
for(i = 0;i<tamanho;++i){
if(valor == list[i])
return i; // encontrou o valor
}
return -1; // no encontrou o valor
}

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS

REMOO

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
REMOO

REMOO POR NDICE REMOO POR VALOR

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
REMOO

REMOO POR NDICE REMOO POR VALOR

91 3 42 7 14
Tamanho = 5
0 1 2 3 4

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
REMOO

REMOO POR NDICE REMOO POR VALOR

Remover o elemento do ndice 2.

91 3 42 7 14
Tamanho = 5
0 1 2 3 4

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
REMOO

REMOO POR NDICE REMOO POR VALOR

Remover o elemento do ndice 2.

91 3 42 7 14
Tamanho = 5
0 1 2 3 4

Aps a remoo...

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
REMOO

REMOO POR NDICE REMOO POR VALOR

Remover o elemento do ndice 2.

91 3 42 7 14
Tamanho = 5
0 1 2 3 4

Aps a remoo...

91 3 7 14
Tamanho = 4
0 1 2 3

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
REMOO

REMOO POR NDICE REMOO POR VALOR

Remover o elemento do ndice 2.

91 3 42 7 14
Tamanho = 5
0 1 2 3 4

Aps a remoo...

91 3 7 14 Observe que os elemento 7 e 14 moveram-se


Tamanho = 4
0 1 2 3 uma posio para a frente da lista.

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
REMOO

REMOO POR NDICE REMOO POR VALOR

91 3 42 7 14
Tamanho = 5
0 1 2 3 4

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
REMOO

REMOO POR NDICE REMOO POR VALOR

Remover o elemento 3.

91 3 42 7 14
Tamanho = 5
0 1 2 3 4

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
REMOO

REMOO POR NDICE REMOO POR VALOR

Remover o elemento 3.

91 3 42 7 14
Tamanho = 5
0 1 2 3 4

Observe que, a princpio, existe a necessidade


de fazer a busca do valor na lista!

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
REMOO

REMOO POR NDICE REMOO POR VALOR

Remover o elemento 3.

91 3 42 7 14
Tamanho = 5
0 1 2 3 4

3?

Observe que, a princpio, existe a necessidade


de fazer a busca do valor na lista!

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
REMOO

REMOO POR NDICE REMOO POR VALOR

Remover o elemento 3.

91 3 42 7 14
Tamanho = 5
0 1 2 3 4

3?

Observe que, a princpio, existe a necessidade


de fazer a busca do valor na lista!

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
REMOO

REMOO POR NDICE REMOO POR VALOR

Remover o elemento 3.

91 3 42 7 14
Tamanho = 5
0 1 2 3 4

3?

Observe que, a princpio, existe a necessidade


de fazer a busca do valor na lista!

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
REMOO

REMOO POR NDICE REMOO POR VALOR

Remover o elemento 3.

91 3 42 7 14
Tamanho = 5
0 1 2 3 4

3?

Valor encontrado
no ndice 1.

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
REMOO

REMOO POR NDICE REMOO POR VALOR

Remover o elemento 3.

91 3 42 7 14
Tamanho = 5
0 1 2 3 4

Agora posso remov-lo!

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
REMOO

REMOO POR NDICE REMOO POR VALOR

Remover o elemento 3.

91 3 42 7 14
Tamanho = 5
0 1 2 3 4

Aps a remoo...

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
REMOO

REMOO POR NDICE REMOO POR VALOR

Remover o elemento 3.

91 3 42 7 14
Tamanho = 5
0 1 2 3 4

Aps a remoo...

91 42 7 14
Tamanho = 4
0 1 2 3

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
REMOO

REMOO POR NDICE REMOO POR VALOR

Remover o elemento 3.

91 3 42 7 14
Tamanho = 5
0 1 2 3 4

Aps a remoo...

Observe que os elemento 42, 7 e 14 tambm 91 42 7 14


Tamanho = 4
moveram-se uma posio para a frente da lista. 0 1 2 3

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
REMOO

REMOO POR NDICE REMOO POR VALOR

Remover o elemento do ndice 2. Remover o elemento 3.

91 3 42 7 14 91 3 42 7 14
Tamanho = 5 Tamanho = 5
0 1 2 3 4 0 1 2 3 4

Aps a remoo. Aps a remoo...

91 3 7 14 91 42 7 14
Tamanho = 4 Tamanho = 4
0 1 2 3 0 1 2 3

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
REMOO

REMOO POR NDICE REMOO POR VALOR


int remover_por_indice(int index){ int remover_por_valor(int valor){
if(tamanho==0){ //verifica se lista est vazia if(tamanho==0){ //verifica se lista est vazia
puts("Nao pode remover! Lista vazia!"); puts("Nao pode remover! Lista vazia!");
return 0; // equivale a FALSE
return 0; // equivale a FALSE
}
} int index = busca(valor); // ndice do valor
if(index < 0 || index >= tamanho){ // verifica se o ndice vlido if(index == -1){ // verifica se o valor existe
puts("Nao pode remover! Indice invalido!"); puts("Nao pode remover! Valor inexistente!");
return 0; // equivale a FALSE return 0; // equivale a FALSE
} }
int i; int i;
for(i = index; i<tamanho-1; ++i) for(i = index; i<tamanho-1;++i)
lista[i] = lista[i+1];
lista[i] = lista[i+1];
-- tamanho;
--tamanho; return 1; // equivale a TRUE
return 1; // equivale a TRUE }
}
Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
REMOO

REMOO POR NDICE


int remover_por_indice(int index){
if(tamanho==0){ //verifica se lista est vazia
puts("Nao pode remover! Lista vazia!");
return 0; // equivale a FALSE
}
if(index < 0 || index >= tamanho){ // verifica se o ndice vlido
puts("Nao pode remover! Indice invalido!");
return 0; // equivale a FALSE
}
int i;
for(i = index; i<tamanho-1; ++i)
lista[i] = lista[i+1];
--tamanho;
return 1; // equivale a TRUE
}
Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS
REMOO

REMOO POR VALOR


int remover_por_valor(int valor){
if(tamanho==0){ //verifica se lista est vazia
puts("Nao pode remover! Lista vazia!");
return 0; // equivale a FALSE
}
int index = busca(valor); // ndice do valor
if(index == -1){ // verifica se o valor existe
puts("Nao pode remover! Valor inexistente!");
return 0; // equivale a FALSE
}
int i;
for(i = index; i<tamanho-1;++i)
lista[i] = lista[i+1];
-- tamanho;
return 1; // equivale a TRUE
}

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017
LISTAS ESTTICAS

david.valente.santiago@gmail.com

Prof.: Almir D. V. Santiago. david.valente.santiago@gmail.com. +55 71 98778-4119 ltima atualizao em: 06/11/2017

Potrebbero piacerti anche