Estructura de datos 3: soporte de idiomas
Estructuras de datos — Soporte de lenguaje (Parte 3)
Estructuras de datos: soporte de idiomas (Parte 3) Estructuras de datos 3: soporte de idiomas
matriz de matrices
El soporte para matrices de enésima dimensión generalmente está integrado directamente en el lenguaje principal. Existen en la mayoría de los idiomas, si no en todos. El soporte para matrices de n dimensiones generalmente está integrado directamente en el lenguaje principal. Existen en la mayoría de los idiomas, si no en todos.
Algunos idiomas indexan desde cero mientras que otros indexan desde uno. Algunos idiomas indexan desde 0 mientras que otros indexan desde 1.
Matriz dinámica de matrices dinámicas
###java
Java ofrece un par de clases, siendo la más conocida la clase ArrayList. Java proporciona dos clases, la más famosa de las cuales es la clase ArrayList.
###pitón
En Python, la lista es un tipo de datos, al igual que las cadenas y los números. Es una implementación de matrices dinámicas. En Python, una lista es un tipo de datos, al igual que las cadenas y los números. Es una implementación de matriz dinámica.
###C++
std::vector de C++ es una implementación de matrices dinámicas. std::vector de C++ es una implementación de una matriz dinámica.
C# también ofrece la clase ArrayList como en Java. C# también proporciona la clase ArrayList como Java.
lista enlazada lista enlazada
###java
En Java, List es una interfaz, donde la clase LinkedList implementa la interfaz List. Se implementa como una lista doblemente enlazada. En Java, Listis es una interfaz en la que LinkedListclass implementa Listinterface. Se implementa como una lista doblemente enlazada.
###pitón
Python no tiene una implementación de lista vinculada incorporada. Las listas de Python no son listas enlazadas, son matrices dinámicas. Python no tiene una implementación incorporada de listas enlazadas. Las listas de Python no son listas enlazadas, son matrices dinámicas.
###C++ El contenedor de listas en la biblioteca del templo estándar es una implementación de lista doblemente vinculada. El contenedor de listas en la biblioteca del templo estándar es una implementación de lista doblemente vinculada.
###C# En C#, existe una clase LinkedList como en Java. También se implementa como una lista doblemente enlazada. En C#, hay una clase LinkedList, al igual que en Java. También se implementa como una lista doblemente enlazada.
pilas pila
###java En Java, tiene una clase Stack. En Java tiene una clase de pila.
###pitón
Python no tiene una clase de pila explícita, pero hay una sección en la documentación de Python sobre el uso de listas como pilas. Python no tiene una clase de pila explícita, pero la documentación de Python tiene una sección sobre el uso de listas como pilas.
###C++ En C++, la pila es parte de la biblioteca de plantillas estándar. En C++, la pila es parte de la biblioteca de plantillas estándar.
###C# C# también ofrece la clase Stack como en Java. C# también proporciona clases de pila en Java.
colas colas
###java Queue es una interfaz tal como lo era List. Existen varias clases concretas que admiten el comportamiento de la cola. La clase LinkedList en realidad admite un comportamiento de cola simple. Queueis es una interfaz idéntica a List. Hay varias clases concretas que soportan el comportamiento de la cola. LinkedListclass en realidad admite un comportamiento de cola simple.
###pitón
El módulo de cola ofrece una clase de cola. Es especialmente útil cuando se trabaja con subprocesos, que es muy común en las colas. También es posible utilizar listas como colas; sin embargo, las listas no son eficientes para este propósito. El módulo de cola proporciona una clase de cola. Es particularmente útil cuando se trata de subprocesos, que son muy comunes en las colas. También es posible utilizar una lista como cola; sin embargo, las listas no son eficientes para este propósito.
collections.deque es una implementación alternativa de colas ilimitadas con operaciones atómicas rápidas append() y popleft() que no requieren bloqueo. deque es una implementación alternativa de colas ilimitadas con operaciones atómicas rápidas append() y popleft() que no requieren bloqueo.
###C++
En C++, hay un contenedor de cola en la biblioteca de plantillas estándar. En C++, hay un contenedor de cola en la biblioteca de plantillas estándar.
###C#
En C#, existe una clase de cola. En C#, hay una clase de cola.
##deque ###java
Java también tiene una interfaz Deque al igual que Queue. La clase LinkedList también implementa esa interfaz Deque. Java también tiene suficientes interfaces como Queue. LinkedListclass también implementa esa interfaz Deque.
Observe que LinkedList está resultando ser una clase muy flexible en Java. Puede comportarse como una lista enlazada y puede comportarse como una cola, y puede comportarse como una cola de dos extremos; deque. Puede ser como una lista enlazada, puede ser como una cola, puede ser como una cola de dos extremos; cola de doble extremo.
###pitón
Python también tiene una clase deque para esto. Aunque podrías usar una lista de Python, la deque está optimizada para este tipo de uso; se agrega y aparece en cada extremo. Python también tiene una clase deque para esto. Aunque puedes usar una lista de Python, deque está optimizado para este uso; agregando y haciendo estallar en cada extremo.
###C++
En C++, hay un contenedor deque. En c++, hay un contenedor deque.
###C# No tiene una deque explícita incorporada, pero podemos proporcionar un comportamiento equivalente con una lista vinculada o incluso una matriz dinámica. Solo tenga en cuenta que cambiar elementos en la matriz no es una tarea eficiente. No tiene una deque explícita incorporada; sin embargo, podemos usar listas vinculadas o incluso matrices dinámicas para proporcionar un comportamiento equivalente. Sólo mantén tu ingenio, porque mover elementos en una matriz no es una tarea eficiente.
Colas de prioridad cola de prioridad
Así como una lista se puede implementar con una lista vinculada o una matriz, una cola de prioridad se puede implementar con un montón o una variedad de otros métodos. Así como las listas se pueden implementar utilizando listas o matrices vinculadas, las colas de prioridad también se pueden implementar utilizando montones u otros métodos.
###Java Java tiene una clase PriorityQueue, que se basa en un montón de prioridad. Java tiene una clase PriorityQueue basada en el montón de prioridad.###Python El módulo de cola ofrece una clase PriorityQueue, que utiliza el módulo heapq internamente para priorizar las entradas de la cola. El módulo heapq utiliza la estructura de datos del montón.
Queue.PriorityQueue es una clase segura para subprocesos, mientras que el módulo heapq no ofrece garantías de seguridad para subprocesos. cola. PriorityQueue es una clase segura para subprocesos y el módulo heapq no proporciona garantías de seguridad para subprocesos.
###C++
C ++ tiene un contenedor de cola prioritario, que también se implementa como una estructura de datos de montón. C ++ tiene un contenedor de cola prioritario, que también se implementa como una estructura de datos de montón.
###C# C# no contiene una clase de cola prioritaria. Sin embargo, existen varias implementaciones para colas prioritarias disponibles en Internet. C# no contiene una clase de cola prioritaria. Sin embargo, existen varias implementaciones de colas prioritarias en Internet.
Matrices asociativas Matriz asociativa
La mayoría de las matrices asociadas, ya sea que se llamen diccionarios, mapas o hash, se implementan utilizando algo llamado tabla hash, y una tabla hash en sí es una estructura de datos muy importante y útil. La mayoría de las matrices asociativas, ya sean diccionarios, mapas o hashes, se implementan utilizando algo llamado tabla hash, que en sí misma es una estructura de datos muy importante y útil.
Otros lenguajes usan un árbol de búsqueda binario (probablemente un árbol rojo negro; un tipo de árbol de búsqueda binario autoequilibrado) donde cada nodo tiene una clave y un valor asociado. Entonces, si desea mantener sus claves en un orden ordenado, las tablas hash no son realmente buenas para eso, pero los árboles de búsqueda binaria sí lo son. Otros lenguajes utilizan un árbol de búsqueda binario (quizás un árbol rojo-negro; un tipo de árbol de búsqueda binario autoequilibrado) donde cada nodo tiene una clave y un valor asociado. Entonces, si desea mantener sus claves ordenadas, las tablas hash no son buenas para eso, pero los árboles de búsqueda binaria sí lo son.
###java En Java, tiene una interfaz Map tal como lo era List. Define las operaciones para matrices asociativas, mientras que las clases HashMap y HashTable son implementaciones de estas operaciones basadas en la estructura de datos de la tabla hash. En Java, tiene la misma interfaz de mapeo que List. Define operaciones en matrices asociativas, y las clases HashMap y HashTable son implementaciones de estas operaciones basadas en la estructura de datos de la tabla hash.
HashTable es mejor cuando se trabaja con aplicaciones de subprocesos múltiples, donde hay diferentes subprocesos que acceden y cambian esta tabla hash, pero agregará un costo de rendimiento.
ConcurrentHashMapclass es un reemplazo del antiguo HashTable. ConcurrentHashMapclass es un reemplazo del antiguo HashTable.
También existe LinkedHashMap, que utiliza una lista vinculada para iterar sobre los elementos de la misma manera en que se insertaron.
Si bien la clase TreeMap también implementa la interfaz Map, en realidad es un RedBlackTree, que es un árbol de búsqueda binario autoequilibrado.
##Python En Python, se denominan diccionarios. Se implementan como un tipo de datos llamado dict, al igual que las cadenas y los números. Se implementan como un tipo de datos llamado dict, al igual que las cadenas y los números.
##C++
C++ ofrece std::unordered_mapcontainer en la biblioteca de plantillas estándar, mientras que std::mapcontainer es la versión ordenada que normalmente se implementa como un árbol de búsqueda binario. C++ proporciona std::unordered_mapcontainer en la biblioteca de plantillas estándar, y std::mapcontainer es la versión ordenada, generalmente implementada como un árbol de búsqueda binario.
###C#
En C#, están disponibles en las clases Dictionary<TKey,TValue>, Hashtable y StringDictionary, mientras que la clase SortedDictionary ordena los pares clave-valor que se implementan como un árbol de búsqueda binario. En C#, están disponibles en las clases Dictionary<TKey, TValue>, Hashtable y StringDictionary, mientras que la clase LessoredDictionary ordena pares clave-valor implementados como árboles de búsqueda binarios.
conjuntos conjuntos
La idea de un conjunto; Tener un contenedor grande donde puedes colocar un montón de elementos en él generalmente se implementa mediante tablas hash o árboles de búsqueda binarios. El concepto de conjunto; Por lo general, se utiliza una tabla hash o un árbol de búsqueda binario para implementar un contenedor grande en el que se pueden colocar muchos elementos.
###java
En Java, tiene una interfaz Set al igual que List y Queue, mientras que las clases HashSet y TreeSet implementan la interfaz Set. En Java tiene una interfaz Set al igual que List y Queue, y las clases lehashset y TreeSet implementan Setinterface.
HashSet se implementa internamente mediante un HashMap, mientras que TreeSet se implementa internamente mediante TreeMap. HashSet se implementa internamente usando HashMap, mientras que TreeSet se implementa internamente usando TreeMap.
###pitón
Python admite tipos de datos set y frozenset. frozenset es una forma de hacer que el conjunto sea inmutable después de haber sido creado. Python admite tipos de datos set y frozenset. frozenset es una forma de hacer que una colección sea inmutable después de crearla.
###C++
Al igual que con los mapas, C++ también ofrece std::unordered_setcontainer en la biblioteca de plantillas estándar, mientras que std::setcontainer es la versión ordenada que normalmente se implementa como un árbol de búsqueda binario. Al igual que el mapeo, C++ también proporciona std::unordered_setcontainer en la biblioteca de plantillas estándar, y std::setcontainer es la versión ordenada, generalmente implementada como un árbol de búsqueda binario.
###C#C# también ofrece la clase HashSet que usa la tabla hash como en Java, mientras que SortedSet es la versión ordenada. C# también proporciona la clase HashSet, que utiliza tablas hash como en Java, y SortedSet es la versión ordenada.
gráficos gráficos
No hay soporte directo para la estructura de datos de gráficos en idiomas (igual que los árboles). Porque la implementación de cualquier gráfico siempre va a ser más específica. Las estructuras de datos de gráficos (al igual que los árboles) no son compatibles directamente con el lenguaje. Porque la implementación de cualquier gráfico es más concreta.
Por ejemplo, una lista enlazada es una especie de gráfico, un árbol es una especie de gráfico, un montón es una especie de gráfico. Una lista simple enlazada se consideraría un gráfico dirigido, mientras que una lista doblemente enlazada es un tipo de gráfico no dirigido. Todos son gráficos con restricciones intencionales. Por ejemplo, una lista vinculada es un gráfico, un árbol es un gráfico y un montón es un gráfico. Una lista enlazada individualmente se considera un gráfico dirigido, mientras que una lista doblemente enlazada es un gráfico no dirigido. Ambos son gráficos con intención restringida.

Resumen del soporte del lenguaje de estructuras de datos Soporte de lenguaje de resumen para estructuras de datos
Fuente: https://medium.com/omarelgabrys-blog/data-structures-language-support-5f70f8312e84
What to read next
Want more posts about Algorithms?
Posts in the same category are usually the best next step for reading more on this topic.
View same categoryWant to keep following #Algorithms?
Tags are useful for related tools, specific problems, and similar troubleshooting notes.
View same tagWant to explore another direction?
If you are not sure what to read next, return to the homepage and start from categories, topics, or latest updates.
Back home