FACULDADE DE AMERICANA
CIÊNCIA DA COMPUTAÇÃO
ALGORITMO PARA COMPUTADORES II
ADRIAN JHONI DE SOUZA RAFAEL - 20240015
ALEHANDRO NASCIMENTO SILVA – 20241717
GUILHERME RIBEIRO TAVARES - 20241772
Orientador: Yuri Campos Braga Costa
Americana
2025
ADRIAN JHONI DE SOUZA RAFAEL - 20240015
ALEHANDRO NASCIMENTO SILVA - 20241717
GUILHERME RIBEIRO TAVARES - 20241772
ALGORITMO PARA COMPUTADORES II
Este trabalho é originário de estudos
sobre Algoritmos para computadores II
na FAM - Faculdade de Americana no
curso de Ciência da computação Turma
2025.
Americana
2025
SUMÁRIO
1 INSTRUÇÕES .......................................................................................................... 4
SIMPLESMENTE ENCADEADA........................................................................................................5
INSERÇÃO...............................................................................................................5
REMOÇÃO.........................................................................................................................8
BUSCA.............................................................................................................................10
DUPLAMENTE ENCADEADA.........................................................................................................11
INSERÇÃO.............................................................................................................11
REMOÇÃO.......................................................................................................................12
BUSCA.............................................................................................................................14
1. INSTRUÇÕES
Explicar as operações das litas simplesmente encadeada e duplamente
encadeadas com códigos de exemplos do dia a dia.
a. Simplesmente:
• Inserção;
• Remoção;
• Busca;
b. Duplamente:
• Inserção;
• Remoção;
• Busca
Poderão ser utilizados exemplos que compreendam as três operações ou
um exemplo para cada.
Os códigos devem estar explicados, de forma que os próprios alunos
consigam explicar eventualmente em uma possível apresentação.
4
Simplesmente encadeada
• Inserção
Linha 1
• O que faz: Cria um novo nó da lista usando malloc (alocação dinâmica de
memória).
• Porquê: Precisamos de espaço na memória para armazenar o novo valor e o
ponteiro para o próximo.
linha 2
• O que faz: Armazena o valor que queremos inserir no campo dado do novo nó.
• Exemplo: se valor = 5, o nó agora contém: 5
Linha 3
• O que faz: Faz o ponteiro prox do novo nó apontar para o início atual da lista.
• Isso conecta o novo nó ao começo da lista existente.
Linha 4
• O que faz: Atualiza o ponteiro da lista (início) para apontar agora para o novo
primeiro nó.
• Agora o novo nó 5 é o primeiro elemento da lista.
5
Linha 1
• Cria um ponteiro atual que começa no primeiro nó da lista.
• Ele será usado para percorrer a lista.
Linha 2
• Procura o nó que contém o valor alvo.
• Vai caminhando de nó em nó até encontrar o valor desejado (ex: 20). • Se não
encontrar, atual vira NULL.
6
Linha 1
• Cria um nó com memória alocada dinamicamente.
Linha 2
• Atribui o valor ao novo nó. Exemplo: valor = 40
Linha 3
• Como ele será o último nó, o ponteiro prox dele deve ser NULL.
Linha 4
• Verifica se a lista está vazia. O novo nó vira o primeiro e único elemento.
Cria um ponteiro atual que percorre a lista até encontrar o último nó (onde
atual->prox == NULL). Agora o último nó aponta para o novo nó.
7
Remoção:
8
Primeiramente criamos a estrutura principal das listas, com um struct para
os nós e as funções de adicionar nós à lista. Após isso estruturamos a função
para apagar a última informação da lista com a lógica de verificação qual o
penúltimo nó da lista a fim de limpar as informações do último nó.
No exemplo abaixo utilizamos a ideia de compra de ingressos disponíveis,
onde a compra de um irá apagar o último disponível.
9
• Busca:
O programa cria uma lista de itens, onde você pode adicionar itens que
utilizamos no dia a dia. Cada vez que você digita um item, ele é colocado no
início da lista, fazendo com que o item mais recente apareça primeiro. Quando
você digita "FIM", o programa para de adicionar itens. Depois, ele pede para
você digitar um nome de item para procurar na lista. Se o item estiver na lista,
ele mostra uma mensagem dizendo que encontrou o item; caso contrário, ele
diz que não encontrou.
10
Duplamente Encadeada
• Inserção
Aqui decidi fazer todos os códigos juntos pois na duplamente encadeada
tem quase o mesmo sentido que a simplesmente mudando na parte de ligamento
entre os nós que invés de ter só uma ligação de ida a duplamente tem ligação
de ida e volta nos nós.
11
• Remoção:
12
A estruturação do código será semelhante a simplesmente encadeada,
porém com a única diferença que será gravado o endereço do nó anterior em
todos os nós e que durante a remoção de um dado o mesmo irá passar o
endereço referenciado anterior para o posterior e o endereço referenciado
posterior para o anterior.
13
• Busca
14
Este código em C implementa uma lista duplamente encadeada com
operações de busca
No main, o usuário é solicitado a inserir valores, que são armazenados
em nós adicionados ao final da lista. Após cada inserção, o programa pergunta
se o usuário deseja continuar. Quando a entrada termina, os elementos da lista
são impressos em ordem.
A função de busca (buscar) tem como objetivo verificar se um determinado
valor está presente na lista duplamente encadeada.
Ela recebe como parâmetros o ponteiro para o início da lista (head) e o
valor a ser procurado. A busca é feita de forma sequencial: a função percorre a
lista do primeiro nó até o último, comparando o campo data de cada nó com o
valor desejado.
Se encontrar um nó com o valor correspondente, a função retorna 1,
indicando que o valor foi encontrado. Se chegar ao final da lista sem encontrar o
valor, retorna 0, indicando que o valor não está presente.
15