1. Implement singly and doubly linked lists.
2. Represent a polynomial as a linked list and write functions for polynomial addition.
3. Implement stack and use it to convert infix to postfix expression
4. Implement array-based circular queue and use it to simulate a producer-consumer problem.
5. Implement an expression tree. Produce its pre-order, in-order, and post-order traversals.
6. Implement binary search tree.
7. Implement priority queue using heaps
8. Implement hashing techniques.
9. Implement Dijkstra's algorithm using priority queues
10. Implement a backtracking algorithm for Knapsack problem