Resumo Tipo de dados: O ADT pode ser definido como um conjunto de valores de dados e operações associadas que são especificadas com precisão, independentemente de qualquer implementação específica. Portanto, um Tipo de Dados Abstrato é uma coleção organizada de informações e um conjunto de operações usadas para gerenciar essas informações. O conjunto de operações define a interface do ADT. Desde que o ADT atenda às condições da interface, não importa realmente como o ADT é implementado. Como no ADT, os valores e operações dos dados são definidos com precisão matemática, e não como uma implementação em uma linguagem de computador, podemos raciocinar sobre os efeitos das operações, relações com outros tipos abstratos de dados, se um programa implementa o tipo de dados etc.
A diferença básica entre o tipo de dados abstratos (ADT) e o tipo de dados concreto é que os últimos nos permitem examinar a representação concreta, enquanto os primeiros nos ocultam a representação. Um ADT pode ser ADT puro ou ADT atualizável. Um ADT puro é aquele em que todas as operações são funções puras. Isso significa que as operações não têm efeitos colaterais. Em particular, eles não modificam ou atualizam os argumentos de entrada. Eles apenas usam esses argumentos para gerar saída, que são novos valores do ADT (ou de outros tipos). A maioria dos tipos de concreto é pura. Por exemplo, nenhuma operação em números inteiros realmente modifica um número inteiro. Em vez disso, todas as operações como '+' produzem novos resultados.
Um ADT atualizável é aquele em que algumas operações realmente alteram os valores do ADT. Por exemplo, suponha que tivéssemos uma operação chamada 'pop' que pegou uma pilha como argumento e a modificou. (“No lugar”, “destrutivamente”) removendo o item de maior prioridade. Essa operação seria considerada impura e todo o ADT também seria impuro. Um ADT pode ser um ADT definido pelo usuário.
Sabemos que um Tipo de Dados Abstrato é um tipo de dados que satisfaz as duas condições a seguir:
A representação, ou definição, do tipo e das operações estão contidas em uma única unidade sintática.
A representação dos objetos do tipo está oculta das unidades de programa que usam o tipo, portanto, somente as operações diretas possíveis nesses objetos são aquelas fornecidas na definição do tipo.
Um tipo de dados abstrato definido pelo usuário deve fornecer:
Uma definição de tipo que permite que as unidades de programa declarem variáveis do tipo, mas oculta a representação dessas variáveis.
Um conjunto de operações para manipular objetos do tipo.
Um exemplo de um tipo de dado abstrato definido pelo usuário é a estrutura. 'C' fornece quatro tipos básicos: int, char, float e double. No entanto, 'C' também fornece ao programador a capacidade de definir seus próprios tipos. Estrutura é um exemplo. Uma estrutura é um agregado de partes diferentes, onde cada parte é de algum tipo existente.
struct abc
{int x;
float y;
};
A definição de estrutura acima não cria nenhuma variável, mas cria um novo tipo. Variáveis desse tipo podem ser criadas de maneira semelhante às variáveis de um tipo incorporado.
struct abc a;
A palavra-chave typedef nos permite criar novos nomes de tipos para nossos novos tipos.
Por exemplo:
typedef struct abc AB;
onde AB é um novo nome de tipo que agora pode ser usado para criar novos tipos.
AB b;
Estruturas de dados: A seguir, são apresentados os recursos característicos das estruturas de dados:
Ele contém itens de dados do componente, que podem ser atômicos ou outra estrutura de dados (ainda um domínio).
Um conjunto de operações em um ou mais dos itens do componente.
Define regras sobre como os componentes se relacionam entre si e com a estrutura como um todo (asserções).
Estruturas de dados:
Uma estrutura de dados pode ser estática ou dinâmica. Uma estrutura de dados estática tem um tamanho fixo. Esse significado é diferente do significado de modificador estático. Matrizes são estáticas; Depois de definir o número de elementos que ele pode conter, o número não muda. Uma estrutura de dados dinâmica cresce e diminui no tempo de execução, conforme exigido pelo seu conteúdo. Uma estrutura de dados dinâmica é implementada usando links.
As estruturas de dados podem ainda ser categorizadas em estruturas de dados lineares e estruturas de dados não lineares. Nas estruturas de dados lineares, cada componente possui um predecessor e sucessor exclusivos, exceto o primeiro e o último elementos, enquanto que no caso de estruturas de dados não lineares, não existe essa restrição, pois os elementos podem ser organizados da maneira desejada, restrita pela maneira como usamos para representam esses tipos.