Christopher wrote: > Hello all, > > This is my first time posting to this illustrious group, so I apologize > if this is covered in the FAQ; if there's a recommended reading list for > this subject, I couldn't find it in my superficial search efforts. I > purchased a copy of Accelerated C++ after joining this group a week or > two ago and am really having a good time going through it, learning the > mechanics of C++. What I've discovered after a few chapters, along with > discussions with a couple of the top developers at my workplace, is > that I have only a vague/non-existent understanding of data structures > and algorithms for problem solving. Hopefully, I'll have a donated copy > of Data Structures and Algorithms in C++ in my possession soon, but I > was wondering if there were textbooks on this subject that you would > recommend for an auto-didactic learner? E.g., would Knuth's The Art of > Programming be intelligible to somebody without a collegiate mathematics > background and still applicable to today's OO design paradigms? I don't > want to get too far ahead of myself, but I think this subject is more > important than the syntax of programming, much like database > normalization and SQL. > > Hit me with your recommendations. I'll exhume my old calculus textbooks > to refresh the hard math parts of my brain in order to understand the > proofs, if I have to. > > Regards, > > -C
The difficulty you are having is fairly natural. Book authors either use cheesy examples that have no relevance or try to go really generic and cover what is known as a "design pattern": http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29 In my experience, each data structure and the needs surrounding it is uniquely different (which is why programming jobs still exist). Being able to adapt and figure out the best possible data structure for the situation is a skill that isn't easily taught. There are some common data structures one can start with that are very common such as the array or linked list that are able to be encapsulated inside a template and reused over and over again. But beyond those, of which most are already provided to you with your compiler, it boils down to a case-by-case basis as to what is the "correct" approach. Additionally, each new program has new insights and solutions from previous attempts (i.e. refinements and improvements of concepts you have learned). It would be helpful to have an example of something very specific you are trying to accomplish. -- Thomas Hruska CubicleSoft President Ph: 517-803-4197 *NEW* MyTaskFocus 1.1 Get on task. Stay on task. http://www.CubicleSoft.com/MyTaskFocus/
