Jump to content
Sign in to follow this  
saramgsilva

Estrutura de Dados em C (TADs)

Recommended Posts

saramgsilva

o meu programa era:

Programa resumido:

    Introdução  Linguagem de programação C

    Estruturas de Dados Dinâmicas

        * Revisão do conceito de referência ou endereçamento (ponteiro)

        * Implementação dinâmica das estruturas de dados lineares: listas lineares, filas, e pilhas

        * Implementação dinâmica das estruturas de dados hierárquicas: árvores e grafos.

    Tipos Abstractos de Dados -- TAD

        * Definição de um TAD

        * Implementação de TADs numa linguagem de programação Imperativa

    Guardar e Recuperar Informação

        * Árvores de Pesquisa

        * Tabelas de Endereçamento Calculado (tabelas de ``hashing'')

Para o estudo de C: linguagem C- luis damas, muito bom, mas em termos de ponteiros aconselho uma leitura extra, pois dominar ponteiros e meio caminho andado!!!

Alguns link's onde encontrei info sobre o programa:

http://www.dei.estg.iplei.pt/P2/EE/

encontras muito material interessante, principalmente em : -> Teóricas 

-> listas simples e listas duplas

este material é mesmo muito fixe, tem as funções principais de listas ligadas e simples, gostei muito...

-> vectores dinâmicos

fala sobre vectores e ponteiros, dei agora uma vista de olhos e pareceu fixe...

nota: este link tem apontamentos da linguagem C, não os li, não posso avaliar....

-> http://www.di.ufpb.br/liliane/aulas/index_ED.html

Bem este link tem ao longo da explicação da matéria, uma animação, por exemplo animação na remoção de um nó de uma lista...(a matéria esta muito resumida...)

-> http://www.ime.usp.br/~pf/algoritmos/

deste link sei que li algumas coisas...não vou avaliar, teria que ler tudo outra vez.

  INDICE:

    * Leiaute

    * Documentação

    * Recursão e algoritmos recursivos

    * Busca em um vetor

    * Remoção e inserção em vetor

    * Listas encadeadas

    * Filas

    * Pilhas

    * Busca binária

    * Ordenação: algoritmos elementares

    * Algoritmo Mergesort

    * Algoritmo Heapsort

    * Algoritmo Quicksort

    * Algoritmos de enumeração

    * Busca de palavras em um texto

    * Árvores binárias

    * Árvores binárias de busca

Recursos da linguagem C

    * Caracteres

    * Inteiros

    * Entrada e saída

    * Strings

    * Ponteiros

    * Alocação dinâmica de memória

    * Entrada e saída: parte 2

    * Registros e Structs

    * Números aleatórios

Apêndices

    * Tabela ISO 8859-1

    * Precedência entre operadores em C

    * Interfaces de bibliotecas

    * Ferramentas e "utilitários"

-> http://wwwp.fc.unesp.br/~erich/ed.html

Nesta pagina, pode encontrar em:

Apostilas

    Apostila de Listas (PUC-Rio)

    Apostila de Pilhas (PUC-Rio)

    Apostila de Filas (PUC-Rio)

    Apostila de Árvores (PUC-Rio)

    Apostila de Árvore Binária (UFPE)

    Apostila de Arv. Balanceada (UFRN)

    Apostila de ABB (UFRN)

    Simuladores

Estes tópicos são apostilas em pdf, gostei muito das apostilas: listas, pilhas, filas, arvores, arvores binárias.

Espero que isto vos ajude, a mim ajudou muito...mas podem e devem ver outros apontamentos...

-> Observação:

Vou deixar uma nota sobre listas e ponteiros, que me surgiu:

Quando estava a resolver os exercícios sobre listas simples reparei que estava a resolver os exercícios da seguinte forma:

declaro um nó como sendo:

typedef int Item;
typedef struct caixa
{ Item valor;
   struct caixa *prox;
}lista;

e ao fazer esta declaração estou a dar o sinónimo de lista á estrutura caixa, quando declaro alguma variável deste tipo, faço lista *ponta; em vez de escrever : struct caixa *ponta;

e fiquei com duvidas quando vi que declara um nó da seguinte forma:

typedef int Item;
typedef struct caixa
{ Item valor;
    struct caixa prox;
}no, *Seta; 

então fazer lista *ponta; ou Seta ponta é a mesma coisa??

Resposta: Sim: na primeira declaração apenas declaras um novo tipo de estrutura a que chamas lista, pelo que, quando necessitas de usar apontadores para uma estrutura destas, tem de o fazer explicitamente usando a declaração "lista *ponta"; no segundo caso, é declarado também o tipo Seta como sendo um apontador para a estrutura, pelo que basta declarar uma variável este tipo "Seta ponta". Funcionalmente, são perfeitamente equivalentes as duas declarações.

por exemplo quando crio uma lista faço

lista* cria()
{return NULL;}
...
main()
{
  lista* ponta;
   ponta=cria();
}

edit: caracteres estranhos corrigidos :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.