Implement your own versions of the following data structures in non-parallel and parallel execution formats, and compare them.
Stack (Linked List, Array based and Binary Tree)
Circular Buffer (Linked List, Array based and Binary Tree)
As part of your comparison you will need to consider does using concurrency increase or lower throughput and by what percentage.
Your test hardness should be based on a producer consumer model that can be run with appropriate parameters to vary the number of producers and consumers.
In addition implement a non-blocking AVL tree (Adelson-Velsky and Landis)
with appropriate output showing how your implementation works.
Note you may use ASCII based graphics as part of your display.