4.43 out of 5
4.43
440 reviews on Udemy

# Fundamental Data Structures & Algorithms using C language.

Learn Data Structures and algorithms for Stack, Queue, Linked List, Binary Search Tree and Heap ( using C Programming ).
Instructor:
Shibaji Paul
4,278 students enrolled
English [Auto]
Recursion, Stack, Polish Notations, infix to postfix, FIFO Queue, Circular Queue, Double Ended Queue, Linked List - Linear, double and Circular - all operations, Stack and Queue using Linked List
What is stack, algorithms for Push and Pop operation. Implementation of Stack data structure using C.
Using Stack - checking parenthesis in an expression
Using Stack - Understanding Polish notations, algorithm and implementation of infix to postfix conversion and evaluation of postfix expression
What is a FIFO Queue, understanding Queue operations - Insert and delete, implementing FIFO Queue
Limitations of FIFO queue, concept of Circular Queue - Implementation of Circular queue.
Concept of Double ended queue, logic development and implementation of double ended queue.
Singly Linked List - developing algorithms for various methods and then implementing them using C programming
Doubly Linked List - developing algorithm of various methods and then implementing them using C programming
Circular Linked List - developing algorithm of various methods and then implementing them using C programming
How to estimate time complexity of any algorithm. Big Oh, Big Omega and Big Theta notations.
Recursion, concept of Tail recursion, Recursion Vs Iteration.
Binary Tree, definition, traversal (in-order, pre-order and post-order), binary search tree, implementation.
Heap - concept, definition, almost complete binary tree, insertion into heap, heap adjust, deletion, heapify and heap sort.

You will learn the following in this course:  (All implemented using C programming)

1. Fundamental of Data Structure concept

2. Why we need Data Structures

3. Stack – Idea, definition, algorithm, implementations.

4. Using Stack – Parenthesis checking, Polish Notation, Infix to postfix conversion and evaluation.

5. FIFO Queue – Idea, definition, algorithm, implementation.

6. Circular Queue using array – Idea, definition, algorithm, implementation.

7. Double ended queue using array – Idea, definition, algorithm, implementation.

8. Linked List – Idea, definition, why we need linked list. Comparison with array.

9. Singly Linked List – Development of algorithm for various operations and then Implementation of each of them

10. Creating Stack and Queue using Singly Linked list – Implementation.

11. Doubly Linked List – Idea, definition, algorithm of various operations and implementations.

12. Circular Linked List – Idea, definition, algorithm and implementations.

14. Calculating efficiency of algorithms, Worst Case (Big Oh), Average Case (Big Theta) and Best case (Big omega) complexities. How to calculate them for different algorithms.

15. Binary Searching

16. Recursion in detail. Example program using recursion and the critical comparison between Recursive approach and Iterative approach of problem solving.

17. Binary Tree, definition, traversal (In, Pre and Post Order), Binary Search Tree implementation.

18. Heap data structure,  definition, heap insertion, deletion, heap adjust, Heapify and heap sort.

### Introduction to the course.

1
Introduction to the course.

1
Introduction of Stack

Introduction to stack data structure. Definition and description, how it works. Understanding Push and Pop operations along with overflow and underflow state of a Stack.

2
Basic understanding of Stack.

Evaluation of your basic understanding of Stack Data Structuure.

3
Some practical example where Stack is used.

Real life applications where Stack has been used, just to help student understand how stack can be used for practical purposes.

4
Basic Algorithm for Stack data structure.

Understanding and development of basic algorithms for Push and Pop operations of Stack.

5
Test your understanding on Stack operations

6
Implementation of Stack.

Implementing Stack operations using C programming language.

7
Some more explanations about the use of Pointers

Explanations and clarifications how the pointers works for implementing Stack operations, why we should pass the address of Stack object to the functions.

8
Building a menu for the implementation.

Building a console based menu system for the Stack operations so that one can call and test the different Stack operations and see how they works.

9
Make the Stack dynamic.

The stack we developed was fixed in size, now let us improve the implementation using dynamic memory allocation technique so that the stack can be allocated with custom size.

10
Make the stack more dynamic.

Improve the stack implementation by adding more dynamic mechanism to it, when the stack is overflow grow the stack to double in size dynamically retaining the existing content.

11
Stack In Action - Decimal to binary conversion

Using the stack data structure in solving a problem. If you try to develop a program for converting an unsigned integer to it's binary equivalent then you will need a Stack. See how stack helps to develop a program to solve a problem.

12
Stack In Action - Reversing the content of a text file.

Another programming example where we can use Stack data structure.

### Step-by-step developing a parenthesis checking program using Stack.

1
Understanding the problem.

Let us understand the problem and how we can approach for a solution using stack. How stack can be useful for developing a solution.

2
Developing the algorithm for bracket checking.

The algorithm for solving the problem of parenthesis checking.

3
The explanation of the algorithm that we develop for parenthesis checking.

Detail explanation of algorithm for checking parenthesis, whether the parenthesis are well formed in a mathematical expression or not.

4
Implementation of parenthesis checking program - Part 1

Starting the implementation of the parenthesis checking program using the C language.

5
Implementation of parenthesis checking program - Part 2

Completing the implementation and executing the program.

### Polish notation and Reverse Polish Notation.

1
Introduction to Polish Notation

How expressions could be represented. Introduction to Polish and Reverse Polish Notation.

2
Polish Notations
3
Understanding precedence of operators, conversion idea - infix to prefix/postfix

Understand how the default precedence works, how we can use the precedence to convert from infix to prefix or postfix. Learn how to manually convert infix to prefix/ postfix.

4
Polish Notations, converting infix to prefix or postfix.

Check your skill on converting infix to pre/post fix and how you have understood the functionality of precedence of operator.

5
How to evaluate Polish or Reverse Polish Notations.

Understand how we can evaluate Polish or Reverse Polish Notations using Stack.

6
Algorithm for evaluating Postfix expression.

Developing algorithm for evaluating Postfix expression using Stack.

7
Evaluating prefix and postfix expression
8
Implementing evaluation of Postfix expression with C Programming language.

You will follow how the evaluation of Postfix expression could be implemented using C Programming language. It will be best if you can try to write the code just after watching the algorithm and cross check with your implementation with the one that is done in this video lecture.

9
Discussion on how to convert Infix to Postfix.

Understand how we should proceed to convert an Infix expression into it's equivalent Postfix expression using a Stack.

10
Infix to Postfix conversion - More examples with procedure

Another example, a more complex one, that will help you to understand the procedure for converting infix to postfix, clearly explains how precedence function should work in such a routine.

11
Elaboration of the procedure that converts infix to postfix.

To help you understand better, just added this lecture which explains in details again about the procedure that converts the infix expression to postfix. Since, the procedure is little bit tricky, this lecture will help you to ease the complexity involved.

12
Writing the algorithm for converting Infix expression to equivalent Postfix.

This lecture develops the algorithm for converting Infix expression to it's equivalent Postfix step-by-step. It is strongly recommended that you complete the previous lectures of this section and then start with this. The previous 3 lectures specially discussed the procedure that I am going to use here for developing the algorithm.

13
Converting infix to postfix - the precedence checking
14
Dry running the Algorithm for converting Infix to Postfix.

Let us dry run the algorithm, that we developed in the last lecture, with some input infix expression to convert it to Postfix. Take your Pen and Paper and do the dry run with me.

15
Starting the implementation, lets first develop the precedence checker function.

In this lecture I will show you how to develop the PRCD function that takes care of comparing the precedence of 2 operators. We need this for implementing the infix to postfix conversion implementation.

16
Writing the C function for converting Infix to Postfix.

Finally, let us write the C Function to convert infix to postfix. The best way for you will be to write the code along with me side-by-side.

17
Combine the conversion and evaluation function in a single program.

Finally combine the functions written to convert from infix to postfix and postfix evaluation into a single program. This is your task to put them together, I am just giving the proposal ;).

1
Introduction to Queue

Understanding Queue data structure - definition, operations on a Queue, various types of Queue data structure.

2
Basic understanding of Queue
3
The FIFO queue implementation idea using Array - Understanding with animation.

Understand how we can build a FIFO queue using one dimensional array. The description and the animation will help you the understand the core concept of how front and rear marker used for building a FIFO queue.

4
Algorithm for FIFO Queue.

Developing algorithm for insert and delete operations for a FIFO Queue.

5
FIFO Queue Algorithm understanding
6
Dry run the FIFO queue algorithm.

Take your pen and paper and proceed with me for dry running the algorithm for FIFO queue operation - this is the best way to understand how any algorithm works.

7
Implementation of FIFO Queue.

Implementation of FIFO queue operations using C Language. Open your favourite IDE and start writing with me.

8
Stack and Queue operations
9
A menu for the Queue program.

A simple console based menu is added to call different Queue operations.

10
The loophole in our implementation of FIFO Queue.

Understanding what went wrong with our implementation of FIFO Queue.

11
Understanding the loophole, why that happened?

Explanation about the flaw in the FIFO algorithm.

12
Flaw in the implementation of FIFO Queue
13
Introduction to Circular Queue.

Introduction to Circular Queue data structure for implementing FIFO queue. Idea of how we can move the rear and front circularly over the array.

14
Circular queue operations. How to perform enqueue and dequeue operations.

Conception on how to perform enqueue and dequeue operations for a circular queue. The conditions for overflow and underflow.

15
Moving rear and front in Circular Queue
16
Algorithm for Circular Queue operations.

The algorithm for enqueue and dequeue operations for a Circular Queue.

17
Dry run Circular Queue operations using the algorithm.
18
Implementation of Circular Queue.

This lecture shows how we can implement Circular queue concept using C Programming language.

19
Introduction to Double Ended Queue

Introduction to the concept of double ended queue.

20
Algorithm development for Double Ended Queue operations.

Development and understanding of the algorithm for Double Ended Queue data structure.

21
Dry run of the DEQ algorithm.

Let us do the dry run of the algorithm of various operations on Double Ended Queue.

22
Implementation of Double Ended Queue.

Implementing operations for a double ended queue using C programming language.

1

Introduction to LinkedList Data structure, drawbacks of Arrays and facilities of having LinkedList. When we should use LinkedList.

2
Definition of Linked List, conception of Node, understanding basic terminologies

Understanding the definition of Linked List, conception of Node in a Linked List, how the link works. The external pointers for accessing linked list.

3

Idea of different categories of linked list, when and how they are beneficial.

4

1
Understanding the 'struct' type we need for implementing singly linked list.

Declare and understand the 'struct' types we need for representing a Node and a Linked List. First step for building various operations on Linked List.

2
The Singly Linked List operations - starting the program.

Understanding various functions and their prototypes which we will implement for abstracting various operations on Linked List. Understanding how we should pass the linked list object to various functions.

3
Developing Insert At Tail operation - Add a new node as last node.

This lecture describes and simultaneously develops a function to add a new node at the end of singly linked list.

4
Implementing Insert at Head - Add a new node as the first node.

Let us now understand and develop a function to dynamically add a new node as the first node of the singly linked list.

5
Traversing the linked list - printing the content of each node.

Let us understand how we can traverse the entire linked list node by node starting from the first node until we access the last node. Then we build a print function that traverses the entire linked list to print the content of each node.

6
Printing the detail of each node of the linked list.

To understand clearly how nodes of the linked list resides in memory developing a function that will print the content of next pointer field of each node, address of the node and the content of the node. When we execute this, you can see how addresses are used to build the linked list.

7
Compiling and executing the program written so far.

Just compiling and running the programme written so far.

8

A practice exercise for Singly Linked List.

9
Developing find operation - to search for a target in the linked list.

How we can search for a target data in linked list.

10

This lectures shows how we can build a function that reads data from a text file and builds the linked list using those data.

11
Creating Linked List from randomly generated integer numbers.

This lecture shows how we can generate random numbers and use them to build the linked list using insert at tail operation.

12
Delete first operation to delete the first node.

This lecture describes and implements how we can implement a function that deletes the first node of the linked list.

13
Delete last operation to delete the last node.

In this lecture you will get the way to develop delete last operation to delete the last node of the linked list.

14
Delete a node that contain a target data.

Let us develop a function that deletes a node containing target data (if that exists).

15

Understanding and implementing the idea of reversing a singly linked list. This lecture shows you how you can reverse the linked list physically, on calling the reverse function twice in a row, the linked list will remain same.

16
Traverse the singly linked list recursively.

Let us try to develop function that uses recursive technique to traverse the linked list.

17
Implementation of Stack using singly linked list.

Let us now build a Stack using Linked List. Implementation of Push and Pop operation when we use linked list as data structure for building a Stack.

18
Implementation of Queue using Linked List

Lets us build a queue using Linked List data structure.

1

Introduction to the Doubly Linked List data structure. Each node contains two pointer this time - traversal in both the ways are possible with doubly linked list.

2
Starting the program to implement various operations for Doubly Linked List.

You will get to know what is the new stuff that we need in the Node to make the linked list doubly. You will learn about the various operations on Doubly Linked List.

3
Implementation of Add First method to add a new node as the first node.

Understand and Implement of AddFirst operation that will add a new node as the first node of doubly linked list.

4

This lecture describes and shows how you can add a new node as the last node of the linked list.

5
Find and Insert After and Insert Before operation.
6
Deleting a node - delete first, delete last and delete a target.

This lecture describes various delete operations for a doubly linked list - delete first to delete the first node, delete last to delete the last node, delete target - to delete a node that contains the target data.

7
Double Ended Queue using doubly linked list.

How we can develop a double ended queue using doubly linked list.

1

The definition and structure of Circular Linked List. Understanding the basics of Circular Linked List.

2
Insert operation for Circular Linked List.

How we can develop a function that inserts a new node into the Circular Linked List.

3
Delete Node operation.

How we can delete a node from the Circular Linked List.

4
Developing find and print operation.

Lets understand how we can traverse a circular linked list. Idea of how we can build a Circular Queue using a Circular Linked List data structure.

### Efficiency of Algorithm

You can view and review the lecture materials indefinitely, like an on-demand channel.
Definitely! If you have an internet connection, courses on Udemy are available on any device at any time. If you don't have an internet connection, some instructors also let their students download course lectures. That's up to the instructor though, so make sure you get on their good side!
4.4
4.4 out of 5
440 Ratings

#### Detailed Rating

 Stars 5 239 Stars 4 140 Stars 3 51 Stars 2 8 Stars 1 2
30-Day Money-Back Guarantee

#### Includes

16 hours on-demand video
3 articles