Contains native implementation of common data structures
Implemented so far :
- Singly linked list with following operations supported
Functionalities in program
-
Get Size
-
Get head element
-
Get tail element
-
Find Kth element from head
-
Find Kth element from tail
-
Remove head element
-
Remove tail element
-
Remove by index
-
Search element by value
-
Find if sequence is bitonic
-
Doubly linked list with all the operations supported in (1) plus printing list in reverse
-
Stack using 3 different implementations : a) Arrays b) Linked lists c) Queues
-
Stack for generic data type with custom iterator added
-
StringBuilder implementation using a char[] array ( as is used in Java )
-
Priority Queue ( Min and Max) with following operations supported : For Max priority queue a. ExtractMax b. IncreaseKey(x,k) where k>= x c. Insert(x) For min priority queue a. ExtractMin b. DecreaseKey(x,k) where k<= x c. Insert(x) Priority queues are heaps, hence the program will follow the convention heap for ease.
-
Queue implementation using both arrays and linked lists
-
Implemented Blocking Semaphore, Counting semaphore, and signalling semaphore using primitve objects and wait(), notify() mechanism. Inspired by : http://tutorials.jenkov.com/java-concurrency/semaphores.html