Estoy tomando mi segundo curso sobre Java. Estamos entrando en estructuras de datos. He hecho una tarea en una lista vinculada, y ahora una pila. Tuve un momento difícil con la lista vinculada. La pila me dio un pequeño problema, pero fue mucho más fácil.
¿Debería preocuparme por tener dificultades con estos algoritmos y estructuras de datos? Siento que realmente no lo entendí.
algorithms
data-structures
Brock
fuente
fuente
Respuestas:
Creo que no debes aceptar no entender estas cosas, porque son realmente fundamentales. Dicho esto, no entenderlos no es nada por lo que sentirse mal. Puede explicar una lista vinculada a un niño. Entonces, si su maestro no se los explicó, es culpa suya. Por lo tanto, no debería pasar tiempo preocupándose, sino más bien tratar de encontrar personas que puedan explicárselo. A menudo, un compañero de estudios es un maestro mucho mejor que un académico de tiempo completo.
Piensa en trenes
Imagine que tiene un conjunto de vagones de ferrocarril, donde cada vagón tiene suficiente capacidad para contener una pieza de datos. Cada carro tiene algún tipo de gancho en su extremo, que se puede conectar al frente de otro carro.
De hecho, esto le da una lista vinculada:
En contraste con eso, podría pensar en una matriz como un tren con un número determinado de vagones, que no se puede reorganizar de ninguna manera. Todo lo que puede hacer es cambiar los datos dentro de ellos. Este modelo también explica muchos de los problemas que tienen las matrices:
En cuanto a la pila: una "pila" es menos una estructura de datos que una idea. La idea de la pila es que actúa como una pila de libros. Solo puede poner libros en la parte superior de la pila y solo puede sacar el libro superior de la pila (al menos si los libros son lo suficientemente pesados).
Dicho esto, una lista vinculada se puede usar como una pila, si piensa en los datos de los vagones como libros, y el libro en el primer carro como la parte superior de la pila.
Así que espero que esto te haya ayudado. Quizás no lo hizo. Tal vez eres más de un tipo visual. En ese caso, le sugiero que encuentre a alguien que sea bueno para dar explicaciones visuales y se las explique. No tomará mucho tiempo, pero valdrá la pena.
Está bien luchar con esto ahora. Pero simplemente aceptarlo no es una opción a largo plazo.
fuente
No diría que "debería estar preocupado" al respecto, pero el simple hecho de que reconozca sus puntos débiles muestra que sabe exactamente dónde estudiar más. Creo que esa actitud te servirá bien y que a la larga estarás bien.
fuente
Para citar a mi profesor favorito de CSCI:
Estructuras de datos suena difícil, ¿verdad? Para mí, suena abstracto y un poco complejo y sobre todo ... ¡importante!
Las estructuras de datos son un curso vital. Y es común luchar, ¡pero sigue adelante! Mientras comas tus Wheaties y sigas así, llegarás al arco iris con un
bag
rellenogeneric items
debajo.fuente
Muy buenos puntos en otras respuestas, solo una nota para agregar: las listas vinculadas de la OMI pueden ser más difíciles que, por ejemplo, las pilas para muchas personas porque se basan en la indirección (expresada a través de referencias / punteros ). Y estos conceptos subyacentes pueden ser difíciles de comprender .
fuente
Data Structures fue la primera clase "dura" que tomé; Utilizamos Fortran 77 en lugar de Java, pero los conceptos son en gran medida los mismos.
Me tomó una semana más que mis compañeros de clase comprender el concepto de una lista vinculada; Hice la tarea, pero después de un par de sesiones ligeramente frustrantes con mi profesor, finalmente hizo clic (literalmente; escuché un "clic" en mi cabeza cuando finalmente entendí).
Todos tienen problemas en algún lugar de su plan de estudios de CS (a menos que sean fanáticos). Si comprende dónde están sus debilidades y cómo abordarlas, realmente no tiene nada de qué preocuparse.
fuente
¿Tuvo problemas para comprender la lista vinculada o simplemente problemas con su implementación?
No es inusual que un nuevo programador tenga dificultades allí, porque puede ser la primera vez que tenga que pensar en lo que realmente significa cuando escribe:
Me retorcí en ALGOL / W en el mismo ejercicio, porque no entendía la semántica del lenguaje. Un año después, apenas podía recordar por qué tenía dificultades.
fuente
Es probable que algunas áreas de desarrollo de software le resulten más difíciles que otras. Ya sea que se trate de ciertos algoritmos, o ciertos patrones de diseño o ciertos procedimientos, variarán de persona a persona. Me parece que tengo que usar algo en un programa real antes de entenderlo completamente.
Estaría más preocupado si alguien afirmara saberlo todo y nunca hubiera tenido problemas para aprender algo.
Personalmente, nunca tuve problemas con las listas vinculadas, pero luego trabajé en un programa durante 8 años que las usaba en todas partes, así que trabajaba con ellas a diario. Siempre que sepa dónde encontrar la información que necesita para actualizar su memoria y las áreas donde tiene "problemas", debería estar bien.
fuente
Tuve problemas con el cálculo y tuve que tomarlo por segunda vez. La segunda vez descubrí que era inteligente, pero el primer profesor de matemáticas era básicamente inútil :)
Encontrará a muchas personas en TI que no pueden comunicarse bien, incluso maestros. Por otro lado, algunas personas en TI son realmente excelentes escritores y comunicadores maestros.
A veces, la lectura externa realmente puede ayudar. Los libros de computadora varían enormemente en calidad. Entra en Amazon y mira qué libro le gusta a la gente.
Buena suerte.
fuente