¿En qué idioma debo estudiar estructuras de datos y algoritmos? ¿Y por qué?

La mejor manera de aprender estructuras de datos es construirlas usted mismo desde cero.
Por lo tanto, recomiendo C junto con un depurador GDB. ¿Por qué?
C es probablemente lo más cercano que puede llegar a la memoria de la computadora, sin profundizar en el ensamblaje. Punteros, IMO es absolutamente necesario para desarrollar estructuras de datos simples desde cero. Muchos lenguajes modernos de programación de aplicaciones no dan acceso a punteros reales, por ejemplo. Java

Comience por entender cómo funciona la memoria. Luego implemente su propia Lista Vinculada, enlace singular, enlace doble, circular, etc. Comprenda cómo funciona la inserción, eliminación y búsqueda. ¡Asegúrese de estar completamente cómodo con las listas y los punteros antes de continuar! Luego implemente algunos BST, Tries y tablas hash. Aprenda los recorridos de los árboles, etc. Finalmente, está listo para los gráficos.

Después de eso, estás listo para graduarte a un idioma superior, por ejemplo. Java con una sólida comprensión de lo que sucede detrás del capó. Cuándo usar diferentes tipos de listas, hash set, etc.

Para comenzar a aprender estructuras de datos, debe aprenderlo en el idioma que prefiera para la codificación normal, ya que las estructuras de datos contienen muchos detalles sobre un idioma en particular, por lo que es necesario que conozca bien ese idioma para implementar esas estructuras de datos.
Ej:
Si conoces C, entonces debes aprender eso en C, porque no podrás entender el código en JAVA ni en ningún otro lenguaje.

Las estructuras de datos no dependen de los lenguajes de programación. Por lo general, les digo a las personas que aprendan lenguajes de programación con los que se sientan cómodos a primera vista, los que tienen el mejor salario o el que necesita para un trabajo específico.
Algoritmos que también puedes aprender sin un lenguaje de programación. Uno de los primeros pasos que tomé cuando estudié algoritmos fue el árbol de decisión, que lo ayuda a comprender más sobre la lógica detrás de los algoritmos.

Python (lenguaje de programación) parece ser popular para los cursos de informática.

Sin embargo, no puedo dar experiencia personal, ya que aprendí esto en C en la década de 1990, ya no lo recomiendo porque es un nivel demasiado bajo para hoy.

También vea la pregunta anterior:
¿Qué lenguaje de programación debo usar al aprender estructuras de datos y algoritmos?