Bueno, sin un conocimiento de las estructuras de datos comunes, un programador no sabrá cuándo y cómo usarlas de manera efectiva, terminando creando estructuras más complejas para resolver algún problema inmediato. Desafortunadamente, esto es muy común, ya que muchos programadores no se beneficiaron de una educación formal en Ciencias de la Computación y tomaron más tiempo en su carrera autodidacta para abordar lo que aprende un estudiante junior de CS en su primer año.
Al abordar la segunda parte de su pregunta, muchas bibliotecas estándar implementan solo las estructuras de datos más utilizadas. Por lo tanto, es muy probable que enfrente una situación en la que necesite implementar la suya. Por ejemplo, su biblioteca estándar puede tener listas doblemente vinculadas implementadas, pero necesita una lista más genérica de múltiples enlaces. O su biblioteca estándar implementa conjuntos, pero no conjuntos múltiples.
En general, puede escapar sin tener que escribir su propia estructura de datos simplemente adoptando alguna biblioteca de terceros que lo haga. Pero esto a veces no es ideal, ya que la dependencia de la biblioteca es algo que uno debería tratar de mantener al mínimo.
- ¿Cuánto tiempo te lleva programar un algoritmo razonablemente complicado?
- ¿Se puede aplicar un límite inferior y superior en el estado estimado por un filtro Kalman?
- ¿Por qué los algoritmos tienen tanta importancia en la programación?
- ¿Cuál es el mejor método de clasificación para usar si solo un elemento está fuera de servicio?
- Cómo obtener el número de coprimos de n bajo n
Si el lenguaje está orientado a objetos, generalmente puede usar las estructuras de datos proporcionadas en la biblioteca estándar y simplemente adaptarlas a sus necesidades utilizando patrones de diseño como el Adaptador o el Decorador, o anulando sus operadores. No siempre es necesario escribir una estructura de datos desde cero.
Pero…
Estructura de datos es un nombre genérico que incluye mucho más que los nombres típicos que se escuchan mencionar, como listas vinculadas, conjuntos, pilas, colas. De hecho, está creando su propia estructura de datos cuando implementa un objeto en un lenguaje de programación orientado a objetos, por ejemplo. O cuando implementa una estructura en un lenguaje de programación procesal. Recuerde que una estructura de datos es cualquier construcción destinada a organizar datos de manera que puedan ser utilizados por otras partes de su programa. Siempre está creando sus propias estructuras de datos.
Del mismo modo, algunas estructuras de datos bien conocidas son extremadamente flexibles y le permiten redefinir sus usos principales. Tome una matriz, por ejemplo. La estructura de datos de la matriz es un lienzo donde puede pintar todo tipo de organización de datos. Puede implementar una matriz 1D, 2D, 3D, nD, o una matriz de tuplas, o una matriz de objetos, o funciones, o una matriz que tenga todos esos elementos juntos en algún tipo de disposición que al final represente una nueva Estructura de datos de abeto para sus necesidades. Ciertamente sigue siendo una matriz, pero su implementación la convirtió en una estructura de datos nueva y más compleja.