Estou fazendo meu segundo curso em Java. Estamos entrando em estruturas de dados. Eu fiz uma tarefa em uma lista vinculada e agora uma pilha. Eu tive um tempo difícil com a lista vinculada. A pilha me deu um pequeno problema, mas foi muito mais fácil.
Deveria me preocupar em ter dificuldades com esses algoritmos e estruturas de dados? Eu apenas sinto que realmente não entendi.
algorithms
data-structures
Brock
fonte
fonte
Respostas:
Eu acho que você não deve aceitar não entender essas coisas, porque elas são realmente fundamentais. Dito isto, você não os entende não é nada para se sentir mal. Você pode explicar uma lista vinculada a um filho. Portanto, se o seu professor falhou em explicá-las para você, a culpa é sua. Portanto, você não deve gastar tempo se preocupando, mas tente encontrar pessoas que possam explicar isso a você. Muitas vezes, um colega é um professor muito melhor do que um acadêmico em período integral.
Pense em trens
Imagine, você tem um conjunto de vagões ferroviários, em que cada vagão tem capacidade suficiente, para conter um dado. Cada carro possui algum tipo de gancho no final, que pode ser anexado à frente de outro carro.
Na verdade, isso fornece uma lista vinculada:
Em contraste com isso, você pode pensar em uma matriz como um trem com um determinado número de vagões, que não pode ser reorganizado de nenhuma maneira. Tudo o que você pode fazer é alterar os dados dentro deles. Este modelo também explica muitos dos problemas que as matrizes têm:
Quanto à pilha: Uma "pilha" é menos uma estrutura de dados do que uma ideia. A idéia da pilha é que ela age como uma pilha de livros. Você só pode colocar livros no topo da pilha e apenas tirar o livro de cima da pilha (pelo menos se os livros forem suficientemente pesados).
Dito isto, uma lista vinculada pode ser usada como uma pilha, se você considerar os dados nos carros como livros e o livro no primeiro carro como o topo da pilha.
Então, espero que isso tenha ajudado. Talvez não. Talvez você seja mais do tipo visual. Nesse caso, sugiro que você encontre alguém que seja bom em dar explicações visuais e explique a você. Não vai demorar muito, mas valerá a pena.
Não há problema em lutar com isso agora. Mas apenas aceitá-lo, não é uma opção a longo prazo.
fonte
Eu não diria que você "deveria estar preocupado" com isso, mas o simples fato de reconhecer seus pontos fracos mostra que você sabe exatamente onde estudar mais. Eu acho que você será bem servido por essa atitude e ficará bem a longo prazo.
fonte
Para citar meu professor favorito da CSCI:
Estruturas de dados parece difícil, certo? Para mim, parece abstrato e um pouco complexo e acima de tudo ... importante!
Estruturas de dados é um curso vital. E é comum lutar, mas continue! Contanto que você comer seu Wheaties e mantê-la, você vai chegar ao arco-íris com um
bag
preenchido comgeneric items
baixo.fonte
Pontos muito bons em outras respostas, apenas uma nota a ser acrescentada: as listas vinculadas da IMO podem ser mais difíceis do que, por exemplo, pilhas para muitas pessoas, porque elas se baseiam em indireções (expressas por referências / indicadores ). E esses conceitos subjacentes podem ser difíceis de entender .
fonte
O Data Structures foi a primeira classe "difícil" que fiz; usamos o Fortran 77 em vez do Java, mas os conceitos são basicamente os mesmos.
Levei uma semana mais do que meus colegas de classe para entender o conceito de uma lista vinculada; Eu atrapalhei a tarefa, mas depois de algumas sessões um pouco frustrantes com meu professor, ela finalmente clicou (literalmente; ouvi um "clique" na minha cabeça quando finalmente entendi).
Todo mundo tem problemas em algum lugar do currículo de CS (a menos que sejam loucos). Se você entende onde estão suas fraquezas e como resolvê-las, não precisa se preocupar com nada.
fonte
Você teve problemas para entender a lista vinculada ou apenas problemas com sua implementação?
Não é incomum para um novo programador ter dificuldade lá, porque pode ser a primeira vez que você precisa pensar no que realmente significa quando escreve:
Fiquei todo distorcido no ALGOL / W no mesmo exercício, porque não entendia bem a semântica da linguagem. Um ano depois, eu mal conseguia me lembrar por que tinha dificuldade.
fonte
É provável que algumas áreas do desenvolvimento de software sejam mais difíceis que outras. Sejam determinados algoritmos, certos padrões de design ou certos procedimentos, variarão de pessoa para pessoa. Acho que tenho que usar algo em um programa real antes de entendê-lo completamente.
Eu ficaria mais preocupado se alguém alegasse saber tudo e nunca tivesse tido problemas para aprender alguma coisa.
Pessoalmente, nunca pareci ter problemas com listas vinculadas, mas depois trabalhei em um programa por 8 anos que as usava em todos os lugares, então estava trabalhando com elas diariamente. Contanto que você saiba onde encontrar as informações necessárias para atualizar sua memória e conheça as áreas em que há "problemas", você deve ficar bem.
fonte
Eu tive problemas com o cálculo e tive que fazer uma segunda vez. A segunda vez que descobri que era inteligente, mas o primeiro professor de matemática era basicamente inútil :)
Você encontrará muitas pessoas em TI que não conseguem se comunicar bem, até mesmo professores. Por outro lado, algumas pessoas em TI são realmente grandes escritores e comunicadores principais.
Às vezes, a leitura externa pode realmente ajudar. Os livros de informática variam enormemente em qualidade. Entre na Amazon e veja de que livro as pessoas realmente gostaram.
Boa sorte.
fonte