Estruturas de Dados

Passo Fundo, 15 de maio de 2017

constantin.leo@gmail.com

Roteiro

  • Revisão: tipos de dados, arrays 1D e 2D
  • Ordenação
  • Tipos Abstratos de Dados (TADs)
  • Ordenação em campos múltiplos
  • C++ STL e Java Collections
  • Arrays dinâmicos em C++ e Java
  • Ordenação com arrays dinâmicos

Revisão: Tipos de Dados

int respostaParaTudo = 42;
double notaDaProvaDeAPS = 7.9;
char mander = 'C';
string frase = "Vamo que vamo, UPF! \\o/";
bool noCeuTemPao = true; // e morreu :(

string timeSkynetDosPampas2016[] = {
    "Leonardo", "Kressin", "Angelo"
}; // sdds desse time

char jogoDaVelha[3][3] = {
    {'o', ' ', 'x'},
    {' ', 'o', 'o'},
    {'x', 'x', 'x'}
};

Ordenação

/* C++ */
#include<algorithm>
using namespace std;

int main(){
    int N = 8;
    int array[] = {
        32, 71, 12, 45,
        26, 80, 53, 33
    };
    sort(array, array + N);
    // array agora:
    // 12 26 32 33 45 53 71 80
    return 0;
}
/* Java */
import java.util.Arrays;

class Main(){
    public static void main
    (String args[]){
        int array[] = new int[]{
            32, 71, 12, 45, 
            26, 80, 53, 33
        }
        Arrays.sort(array);
    // array agora:
    // 12 26 32 33 45 53 71 80
    }
}

Problema: alunos e notas

#include <iostream>
#include <algorithm>

using namespace std;

int main(){
    string aluno[3] = {"Pedro", "Guilherme", "Lucas"};
    double nota[3] = {4.5, 10, 8};
  
    sort(nota, nota + 3);

    for(int i = 0; i < 3; i++){
        cout << aluno[i] << " " << nota[i] << endl;
    }
}

Problema: alunos e notas

# Saída esperada
Pedro 4.5
Lucas 8
Guilherme 10
# Saída do programa
Pedro 4.5
Guilherme 8
Lucas 10

As notas estão ordenadas :D

Mas os alunos estão fora de ordem (!)

Tipos Abstratos de Dados (TADs)

  • Tipo de dado que não foi previsto na linguagem
  • Geralmente é composto por múltiplos dados de tipos diferentes ou mesmo tipo
/* C++ */

struct aluno{
    string nome;
    double nota;
}
/* Java */

public class aluno{
    String nome;
    double nota;
}

Estruturas de Dados

By Leonardo Deliyannis Constantin