Por que aprender estrutura de dados em C?
Porque o C não esconde nada. Sem lista, mapa ou fila embutidos, você implementa cada estrutura a partir de blocos de memória e ponteiros, que é exatamente o que a estrutura é. Depois disso, o HashMap do Java e o dict do Python são as mesmas ideias com o gerenciamento de memória feito para você, e você consegue raciocinar sobre quanto eles custam.
O que devo saber antes de aprender estrutura de dados em C?
Ponteiros, structs, arrays, e malloc e free. Principalmente ponteiros: uma lista ligada é uma cadeia de campos struct node *next, e uma árvore binária tem dois deles por nó. Se você ainda não está firme com ponteiros, o curso de C da Coddy cobre isso primeiro, de graça.
Como implementar uma tabela hash em C?
Com um array de buckets, uma função hash que transforma uma chave em um índice e uma regra para quando duas chaves caem no mesmo bucket: normalmente uma lista ligada por bucket (encadeamento) ou sondagem até a próxima posição livre. Quando a tabela passa de um fator de carga definido, você aloca um array maior e reinsere tudo. O curso de tabela hash do passo um constrói uma do zero.
C é uma boa linguagem para entrevistas de programação?
Poucos candidatos fazem entrevistas em C fora de vagas de sistemas embarcados e de programação de sistemas, porque escrever uma tabela hash do zero no meio da entrevista custa um tempo que outras linguagens te dão de graça. Mesmo assim, o conhecimento se transfere por completo, e o C++ está a um passo: a mesma sintaxe, mais a STL. Um caminho comum é aprender as estruturas em C e depois fazer os pacotes de entrevista em C++, Java ou Python, todos oferecidos nesta trilha.
Quais cursos desta trilha não são ensinados em C?
Três: programação dinâmica e a série de entrevistas em Python são ensinadas em Python, e manipulação de bits em C++. Esses cursos aparecem listados depois dos passos, cada um com um link que o abre na própria linguagem. Dos três, o de manipulação de bits é o mais fácil de acompanhar vindo do C: o C++ manteve os &, |, ^, ~, << e >> do C exatamente como são.
Devo aprender estrutura de dados em C ou em C++?
C para entender as estruturas, C++ para usá-las. Em C você constrói tudo, e é por isso que tantas faculdades ensinam a matéria nele; em C++ você constrói cada estrutura uma vez e depois recorre à STL, e é por isso que os programadores competitivos o usam. Começar em C e passar para C++ não faz você perder nada.