¿Tenemos que implementar estructuras de datos?

Por lo general, las personas dicen que necesita implementar estructuras y algoritmos de datos usted mismo para ser mejores e inteligentes al usarlos, otros dicen que necesita implementar estructuras y algoritmos de datos porque a veces necesita editar / modificar. Realmente creo en eso también, te daré un ejemplo (prueba):

Hay un tipo de búsquedas, en lugar de la búsqueda lineal (verifique cada elemento en el dominio) llamada búsqueda binaria (la técnica de búsqueda del diccionario) , en algunos idiomas la búsqueda binaria está incorporada, pero usándola sin saber exactamente cómo funciona y ser capaz de implementarlo por su cuenta puede causar grandes problemas. también a veces se encuentra en la necesidad de realizar búsquedas binarias en datos no numéricos o datos complejos, en este caso necesita implementar lo que generalmente llamamos la función de “validación”.

Lo mismo en las estructuras de datos, además de que la mayoría de las estructuras de datos son completamente dinámicas, quiero decir que no pueden (o eso casi no puede suceder) agregarse a una biblioteca y ser genéricas como pilas o colas, algo como la estructura de datos trie, segmento de árbol, y la mayoría de los árboles en general.

la mayoría de las veces se encuentra en la necesidad de implementar alguna estructura de datos, también practicando que es genial, puede llegar a un punto en el futuro en el que cree muchas estructuras de datos por su cuenta para usarlas en el trabajo (las inventa para hacer algunas trabajo) en ese momento no tienes una referencia, excepto el conocimiento en tu cabeza sobre eso.

Por lo general, digo que no es necesario implementar completamente todas las estructuras de datos y escribir código y practicar eso, pero por otro lado, debe comprender profundamente tantas estructuras de datos y algoritmos como sea posible, si realmente quiere ser Un buen informático.

Raramente si alguna vez. Por lo general, en la práctica, utiliza lo que ha aprendido sobre DS para elegir el tipo de colección particular de una biblioteca prefabricada. Por ejemplo, tendría que decidir “¿utilizo una matriz dinámica aquí o una lista vinculada” … “o sería mejor un árbol de búsqueda binario” … “¿qué pasa con un mapa hash en su lugar” … “o necesito algo más” …

Hay situaciones en las que tiene que hacer su propio DS de caso especial, si no puede encontrar una biblioteca que proporcione un DS que se adapte exactamente a las necesidades de su tarea. Pero rara vez, y la mayoría de los programadores solo pueden encontrarse con una situación así muchas veces a lo largo de sus vidas (si alguna vez).

Ahora, algunos idiomas y / o entornos tienen conjuntos de bibliotecas más grandes que otros. Por ejemplo, es posible que C no tenga una pila incorporada, necesitará encontrar una tercera biblioteca en parte o escribir la suya propia. Pero C ++ / Java / C # / Python / JS / etc. todos tienen tales pilas fácilmente disponibles.

En C, podría ser más rápido implementar una pila que encontrar una biblioteca y aprender a usarla. En C ++ hay una biblioteca STL, por lo que es suficiente para

#include

En Python puedes usar listas estándar como una pila.

Si todavía es un principiante, es un buen ejercicio implementar una pila, solo para comprender mejor lo que está sucediendo en segundo plano.

Eso depende del idioma. Algunos idiomas tienen estructuras de pila listas para usar, algunas las tienen como un módulo cargable. Algunos idiomas no tienen pilas, pero las operaciones en matrices funcionan como una pila. Algunos idiomas requieren que escribas una pila desde cero.

Si está utilizando el análisis de descenso recursivo, entonces no necesita implementar la pila, utilizará la pila de tiempo de ejecución implícita; de lo contrario, si está utilizando Java, puede usar java.util.Stack