In order to find middle element of linked list in one pass, you need to maintain two pointers, one increment at each node while other increments after two nodes at a time. By having this arrangement, when first pointer reaches end, second pointer will point to middle element of linked list.
Stanford Engineering Everywhere (SEE) offers few computer science courses to students online and at no charge. Programming Abstractions course covers advanced programming topics such as recursion, algorithmic analysis, and data abstraction using the C++ programming language, which is similar to both C and Java.
The C programming language includes a very limited number of standard libraries or common data structures and algorithms in comparison to other modern programming languages such as Java, C# or Python. This is a collection of common algorithm and data structure implementation in C which may be used in C projects.
This is implementation of Bayer-Trees, which are normally used for indices of data bases. These routines provide all stuff that is needed to create and destroy; insert, update and delete; load and destroy; search and traverse; check a tree. Sort huge amounts of data by doing a multi-phase sorting on temporary files.
Ubiqx is a collection of ANSI C compatible modules for implementing linked lists, binary trees, caching and spare arrays. The goal of the ubiqx project is to develop a set of clean, small, re-usable code modules which implement fundamental constructs and mechanisms, and to make them available under the terms of the GNU Library General Public License (LGPL).