Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Conceitos e Implementação de Listas em Ciência da Computação, Notas de aula de Programação em C

Este documento aborda os conceitos básicos de listas como estrutura de dados lineares, sua definição em ciência da computação, tipos de listas, operações básicas e implementação de listas estáticas. Além disso, é apresentada a implementação de funções para criar, destruir, inserir e remover elementos em listas estáticas.

O que você vai aprender

  • Como funciona a alocação estática e dinâmica de memória em listas?
  • Quais são os tipos de listas com base na inserção/remoção de elementos?
  • O que é uma lista como estrutura de dados em Ciência da Computação?
  • Quais são as operações básicas de uma lista?
  • Como implementar funções para manipular listas estáticas?

Tipologia: Notas de aula

2022

Compartilhado em 30/03/2022

otimize-engenharia
otimize-engenharia 🇧🇷

5 documentos

1 / 26

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Algoritmos e Estruturas de
Dados I
Prof Me. Fabiana Rocha de Andrade e Silva
fabiana.silva@unialfa.com.br
2022.1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a

Pré-visualização parcial do texto

Baixe Conceitos e Implementação de Listas em Ciência da Computação e outras Notas de aula em PDF para Programação em C, somente na Docsity!

Algoritmos e Estruturas de

Dados I

Prof.ª Me. Fabiana Rocha de Andrade e Silva fabiana.silva@unialfa.com.br

  1. 1
  • Definição comum:
    • Trata-se de uma relação finita de itens, todos eles contidos dentro de um mesmo tema.
    • Exemplos: itens em estoque em uma empresa, dias da semana, lista de compras do supermercado.
  • Definição em Ciência da Computação:
    • É uma estrutura de dados linear utilizada para armazenar e organizar os dados em um computador.
    • Sequência de elementos do mesmo tipo. Listas
  • Independentemente do tipo de alocação, os elementos podem ser

acessados:

  • Acesso sequencial: elementos são armazenados de forma consecutiva na memória (como array ou vetor).
  • Acesso encadeado: cada elemento pode estar em uma área distinta da memória, não necessariamente consecutiva. É necessário que cada elemento da lista armazene, além da sua informação, o endereço de memória onde se encontra o próximo elemento.
  • Operações básicas de uma Lista
    • Criação da lista
    • Inserção de um elemento na lista
    • Remoção de um elemento da lista
    • Busca por um elemento da lista
    • Destruição da lista
    • Além de informações com tamanho, se a lista está cheia ou vazia
  • Operações de remoção
    • Envolve o teste de lista vazia, ou seja, precisamos verificar se existem elementos dentro da lista antes de tentar removê-los
  • Lista Sequencial Estática ou Lista Linear Estática
    • É uma lista definida utilizando alocação estática e acesso sequencial de elementos.
    • É definida utilizando um array, de modo que o sucessor de um elemento ocupa a posição física seguinte deste.
    • Além do array, utiliza um campo adicional (qtd) que serve para indicar o quanto do array já está ocupado pelos elementos (dados) inseridos na lista. Lista *li; :::os :.....-:-3-- 23 --,--- 1 -S__l__.....-___...... o MAX-
  • Lista Sequencial Estática ou Lista Linear Estática
    • Aplicações
      • Lista pequenas
      • Inserção e remoção apenas no final da lista
      • Tamanho máximo da lista bem definido
      • A busca é a operação mais frequente
  • Implementação da Lista Estática
    • “ListaSequencial.h”: definir
      • Os protótipos das funções
      • O tipo de dado armazenado na lista
      • O ponteiro “lista”
      • Tamanho do vetor usado na lista
    • “ListaSequencial.c”: definir
      • O tipo de dados “lista”
      • Implementa as suas funções
  • Implementação da Lista Estática
    • Informações sobre lista: tamanho? está cheia? está vazia? ..- (^) .n t_. 3 dados 12 o 33 23

T amanho - -^ 1i->qtd

, , MAX-

  • Implementação da Lista Estática
    • Informações sobre lista: tamanho? está cheia? está vazia? AX 33, (^) 116

l ,1 1 is' a Chei 1 ia .. i ·->qtd -- MAX ___ .AX 1

  • Implementação da Lista Estática
    • Inserção de elementos: início, meio e final

int in r . (^) • J.. fin 1( l struct qtd 3 dados (^) ....._ (^33) _ (^) ._ (^23) ...___ (^16) ____.,.........,_ _, o ai qtd 1 4 12 MAX- li->dados[li->qtd] = al; li->qtd++; ~------------------~ 1 y dados l..... 3 _3_____ 23 1 6 ____.. 1 _ 2 , . ___, o MAX- n ) ,

  • Implementação da Lista Estática
    • Inserção de elementos: início, meio e final int n s r e qtd 3 dados ~ 3á P 16 ~ o ai

, struct

MAX- Desloca os elementos uma posição para frente e insere: for(i=li->qtd-1; i>=O; i--) li->dados[i+l] = li->dados[i]; li->dados[O] = al; li->qtd++; qtd 4 r-------------------, 1 dados 12 A ~ f ~;i: ~ w o MAX- uno )^ ;

  • Implementação da Lista Estática
    • Inserção de elementos: início, meio e final Lista inicial Busca onde Inserir: dados l 16___ 2 3___3 3 _______.____.______. o int k, i = O; while(i < li->qtd && li->dados[i] .matricula< al.matricula) i++; Inserção no início ou no meio: desloca elementos for(k=li->qtd-1; k >= i; k--) li->dados[k+l] = li->dados [ k]; dados 12 V 1,, 6 ÂÍ 2~ 1V 33 i o dados!^16 19 1 1/ 4' fl~/ (^3) v ~ 1 o

 Inserir elemento li->dados[iJ = al; (^) dados! **16 23 33 40** li->qtd++; o **MAX-** **MAX-** **MAX- 

MAX-**

  • Implementação da Lista Estática
    • Remoção de elementos: início, meio e final J..S' f^ in.^1 (^ a qtd 4 dados 33 23 16 12 o (^) MAX- l i- >qtd --; qtd (^3) ~-------------] dados (^33 23 ) o MAX-