• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

saramgsilva

Estrutura de Dados em C (TADs)

1 mensagem neste tópico

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 :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora