Data Structures in C

Joined
11/1/13
Messages
11
Points
13
I am planning to learn data structures using C language. The question is what would be the best environment/IDE? Which one is more widely used in the industry? Any thoughts/suggestions are welcome.
Also which books would you recommend?
Many thanks!
 
I am planning to learn data structures using C language. The question is what would be the best environment/IDE? Which one is more widely used in the industry? Any thoughts/suggestions are welcome.
Also which books would you recommend?
Many thanks!

I've came across a quant that uses vcc for coding, although he do note that the final compilation is done in linux/gcc. It was mainly made to plug into current treasury system. Hence it's important to code without depending on libraries that are only available in windows.

I think c++ is the important ones. OOP is important along with containers.
 
The people who write proper C programs use a bash shell and an editor: either VIM or emacs. If you want to get good at C, you should probably start doing the things that people who are good at C do.
 
Thanks everyone for your suggestions. I decided to install cygwin and use vim editor. I have windows7 on my laptop.
I am planning to use the book by Sedgewick - Algorithms in C (3rd edition).
Do you have any suggestions for the book?
 
Thanks everyone for your suggestions. I decided to install cygwin and use vim editor. I have windows7 on my laptop.
I am planning to use the book by Sedgewick - Algorithms in C (3rd edition).
Do you have any suggestions for the book?

So-so. Usable but verbose, not really that well-organised.
 
Do you recommend any other books?

Yes. The top book, the best book -- and one that probably no-one here knows about -- is Reema Thareja's Data Structures Using C, published by Oxford in India.

First let me start with the bad points. 1) The paper used isn't great, 2) You have to check every page to see it's not missing (I ordered four copies and ended up with two usable ones), and 3) there are some bugs in the code (little fixable ones for me so far and not to do with design).

Now the good points. I have several books on data structures for C. None comes close to what Thareja does -- which is C code for linked lists, stacks and queues, binary trees, heaps, graphs, and hash tables.
 
Yes. The top book, the best book -- and one that probably no-one here knows about -- is Reema Thareja's Data Structures Using C, published by Oxford in India.

Do you have a link to an ebook version of this perhaps ? Ordering it from India would be impractical
 
Do you have a link to an ebook version of this perhaps ? Ordering it from India would be impractical

Both Amazon and abebooks have copies for sale. Noel Kalicharan's Data Structures in C is another possibility but in my opinion not so good.
 
Yes. The top book, the best book -- and one that probably no-one here knows about -- is Reema Thareja's Data Structures Using C, published by Oxford in India.

Does it cover the analytic aspects ... like the average case behaviour of a random unbalanced binary search tree ?
 
I think Hanson's "C Interfaces and Implementations" is worth a look:
https://sites.google.com/site/cinterfacesimplementations/
It also emphasizes the design aspects of ADTs' implementations that many other books (especially, but not exclusively, C-oriented) seem to miss. This emphasis, together with its implications (like taking into account the impact of different interface choices on the reusability of your data structures' implementations), is actually pretty important in practical programming.
// But also read the review for upsides & downsides: http://drhanson.s3.amazonaws.com/storage/documents/CRreview.pdf

// BTW, there's also a more recent book by the aforementioned Noel Kalicharan (author of "Data Structures In C"), "Advanced Topics in C: Core Concepts in Data Structures", but I'm not familiar with it.

Regarding theoretical aspects -- I actually kinda like the classic, CLRS, but Sedgewick also has some likable aspects (e.g., empirical performance analysis and the practical bent with programming over pseudocode). Personally, I'd try both, you may like them at different times for different reasons :)
 
Last edited:
I think Hanson's "C Interfaces and Implementations" is worth a look:
https://sites.google.com/site/cinterfacesimplementations/
It also emphasizes the design aspects of ADTs' implementations that many other books (especially, but not exclusively, C-oriented) seem to miss. This emphasis, together with its implications (like taking into account the impact of different interface choices on the reusability of your data structures' implementations), is actually pretty important in practical programming.
// But also read the review for upsides & downsides: http://drhanson.s3.amazonaws.com/storage/documents/CRreview.pdf

// BTW, there's also a more recent book by the aforementioned Noel Kalicharan (author of "Data Structures In C"), "Advanced Topics in C: Core Concepts in Data Structures", but I'm not familiar with it.

Regarding theoretical aspects -- I actually kinda like the classic, CLRS, but Sedgewick also has some likable aspects (e.g., empirical performance analysis and the practical bent with programming over pseudocode). Personally, I'd try both, you may like them at different times for different reasons :)
 
It also emphasizes the design aspects of ADTs' implementations that many other books (especially, but not exclusively, C-oriented) seem to miss. This emphasis, together with its implications (like taking into account the impact of different interface choices on the reusability of your data structures' implementations), is actually pretty important in practical programming.

This is very important IMO. The biggest crux in software development is when you have to modify the code when requirements change. We can take preventive measures beforehand in order to be one step ahead but in many cases it just means a rework of the code in the dependency graph. The changes ripple through the network which can mean a huge rework in many cases.

Looking at software from the viewpoint of ADTs (which evolve into generic classes) tends to ossify the object network. Using interfaces and module interface languages (MIL) reduces the coupling.

Once a hard-coded name is chosen for the ADT it cannot be changed without modifying all of its dependents.

I do not have that book; does it go into any detail on the different interface (+ data) choices? So howe do we avoid/repair interface mismatch? Specifically, wrappers, bridges (virtual machines) and mediators. Interface repair costs spondulix.
 
Last edited:
Back
Top Bottom