Arrays and Strings:
a. Write a C program to find the sum of elements in an array.
b. Explain how you can reverse a string in C.
Linked Lists:
a. Implement a function to insert a node at the beginning of a linked list.
b. Write a program to detect a loop in a linked list.
Stacks:
a. Implement a stack using an array.
b. Write a C program to check for balanced parentheses using a stack.
Queues:
a. Implement a queue using two stacks.
b. Write a C program to perform enqueue and dequeue operations on a queue.
Trees:
a. Implement a binary search tree and perform an inorder traversal.
b. Write a function to find the height of a binary tree.
Graphs:
a. Implement a depth-first search (DFS) algorithm for a graph.
b. Write a program to find the shortest path in a weighted graph using Dijkstra's algorithm.
Sorting and Searching:
a. Implement the quicksort algorithm in C.
b. Write a program to perform binary search on a sorted array.
Hashing:
a. Implement a hash table in C.
b. Write a program to handle collisions in a hash table using chaining.
Dynamic Programming:
a. Solve the Fibonacci sequence using dynamic programming.
b. Implement the knapsack problem using dynamic programming.
Miscellaneous:
a. Explain the difference between a stack and a queue.
b. Describe the advantages and disadvantages of arrays and linked lists.