- Data Structure
- Classification of Data Structures
- Abstract Data Type (ADT)
- Dynamic Memory Allocation in C
- Algorithms
- Space and Time Complexity
- Asymptotic Notations

- Introduction
- Stack Operations
- The Stack ADT
- Applications of Stack
- Algorithm for PUSH and POP Operations on Stack
- Array Implementation of Stack
- Expression (Infix, Prefix & Postfix)
- Algorithm to Evaluate Postfix/Prefix Expression
- Conversion From Infix to Postfix
- Conversion From Infix to Prefix

- Introduction
- Recursion vs Iteration
- Tail Recursion
- Factorial of an integer (Example of recursive algorithm)
- Fibonacci Sequence (Example of recursive algorithm)
- Tower of Hanoi (TOH)
- GCD (Example of recursive algorithm)
- Advantages/Disadvantages of Recursion

- Introduction
- Types of Linked List
- Singly Linked List (SLL)
- Doubly Linked List (DLL)
- Circular LInked List (CLL)
- Doubly Circular Linked List (DCLL)
- Linked List Implementation of Stack
- Linked List Implementation of Queue

__Advantages of recursion__

1. The code
may be easier to write.

2.
To solve such problems which are naturally recursive such as tower of Hanoi.

3.
Reduce unnecessary calling of function.

4.
Extremely useful when applying the same solution.

5.
Recursion reduce the length of code.

6.
It is very useful in solving the data structure problem.

7.
Stacks evolutions and infix, prefix, postfix evaluations etc.

__Disadvantages of recursion__

1.
Recursive functions are generally slower than non-recursive function.

2.
It may require a lot of memory space to hold intermediate results on the system
stacks.

3.
Hard to analyze or understand the code.

4.
It is not more efficient in terms of space and time complexity.

5. The computer may run out of memory if the recursive calls are not properly checked.

Hurray! this unit is completed.