Data Structures - Stack, Queue and LinkedList
4.9 (27 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
1,487 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Data Structures - Stack, Queue and LinkedList to your Wishlist.

Add to Wishlist

Data Structures - Stack, Queue and LinkedList

Build strong fundamentals on programming by learning and developing Stack, Queue and Linked List operations from scratch
4.9 (27 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
1,487 students enrolled
Created by Shibaji Paul
Last updated 5/2017
English
Current price: $10 Original price: $95 Discount: 89% off
5 hours left at this price!
30-Day Money-Back Guarantee
Includes:
  • 9.5 hours on-demand video
  • 1 Article
  • 31 Supplemental Resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Understand the usage of Stack, Queue and LinkedList also they will be able to use these data structures in their programming activities.
View Curriculum
Requirements
  • Student should be conversant with basic C programming.
Description

Learning a programming language is not the only thing that makes a good programmer, understanding the data structures and the knowledge to utilise the suitable data structure for solving a problem is vital parameter for a good programmer. 

The primary aim for this course is to introduce and teach various operations of three fundamental data structures - Stack, Queue and Linked List, to the students who just have learned programming language. This course explains each of these data structures in detail along with the general operations (API) on them, how to build these data structure operations using algorithm and then how to implement those algorithm using C Programming language from the scratch. The course also contains explanation to various programming examples where these data structures could be used - a complete section has been added for processing Polish Notations which is an excellent example where Stack data structure is used.

This course exactly follows the standard syllabus of Data Structure for graduate level Computer Science course, therefore, going to be a great help for the students who are currently doing the same.

In all modern programming languages like Java, C#, C++, Python you will find these data structures are in-build in the native library of the language, however, building the APIs for the data structures from the scratch will definitely help you to understand them best instead of using them blindly, and that is the main purpose of this course. 



 



Who is the target audience?
  • Students who are looking forward to be an efficient programmer, who are having data structures in their syllabus.
  • Students who wants to have in dept knowledge about the Stack, Queue and Linked List.
Students Who Viewed This Course Also Viewed
Curriculum For This Course
77 Lectures
09:34:49
+
Introduction to the course.
1 Lecture 04:25
+
All about Stack
10 Lectures 54:17

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.

Introduction of Stack
02:47

Evaluation of your basic understanding of Stack Data Structuure.

Basic understanding of Stack.
4 questions

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

Some practical example where Stack is used.
03:52

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

Preview 07:06

This quiz will tests your understanding about the Stack operations.

Test your understanding on Stack operations
3 questions

Implementing Stack operations using C programming language.

Implementation of Stack.
07:16

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

Some more explanations about the use of Pointers
02:24

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.

Building a menu for the implementation.
03:28

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.

Make the Stack dynamic.
06:10

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.

Make the stack more dynamic.
05:16

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.

Preview 08:38

Another programming example where we can use Stack data structure.

Stack In Action - Reversing the content of a text file.
07:20
+
Step-by-step developing a parenthesis checking program using Stack.
5 Lectures 47:24

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

Understanding the problem.
10:55

The algorithm for solving the problem of parenthesis checking.

Developing the algorithm for bracket checking.
08:52

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

The explanation of the algorithm that we develop for parenthesis checking.
13:25

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

Implementation of parenthesis checking program - Part 1
05:55

Completing the implementation and executing the program.

Implementation of parenthesis checking program - Part 2
08:17
+
Polish notation and Reverse Polish Notation.
13 Lectures 02:09:02

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

Preview 06:42

Polish Notations
4 questions

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.

Understanding precedence of operators, conversion idea - infix to prefix/postfix
11:30

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

Polish Notations, converting infix to prefix or postfix.
4 questions

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

How to evaluate Polish or Reverse Polish Notations.
08:40

Developing algorithm for evaluating Postfix expression using Stack.

Algorithm for evaluating Postfix expression.
06:56

Evaluating prefix and postfix expression
2 questions

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.

Implementing evaluation of Postfix expression with C Programming language.
11:19

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

Discussion on how to convert Infix to Postfix.
17:14

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. 

Infix to Postfix conversion - More examples with procedure
17:20

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. 

Elaboration of the procedure that converts infix to postfix.
03:14

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.

Writing the algorithm for converting Infix expression to equivalent Postfix.
06:38

Converting infix to postfix - the precedence checking
3 questions

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.

Dry running the Algorithm for converting Infix to Postfix.
15:43

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.

Preview 08:42

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.

Writing the C function for converting Infix to Postfix.
13:22

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 ;).

Combine the conversion and evaluation function in a single program.
01:42
+
All about Queue
16 Lectures 01:25:44

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

Introduction to Queue
06:04

Basic understanding of Queue
2 questions

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.

The FIFO queue implementation idea using Array - Understanding with animation.
02:13

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

Algorithm for FIFO Queue.
04:37

FIFO Queue Algorithm understanding
2 questions

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.

Dry run the FIFO queue algorithm.
06:43

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

Implementation of FIFO Queue.
06:59

Stack and Queue operations
1 question

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

A menu for the Queue program.
03:18

Understanding what went wrong with our implementation of FIFO Queue.

The loophole in our implementation of FIFO Queue.
03:16

Explanation about the flaw in the FIFO algorithm.

Understanding the loophole, why that happened?
05:21

Flaw in the implementation of FIFO Queue
3 questions

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

Introduction to Circular Queue.
03:41

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


Circular queue operations. How to perform enqueue and dequeue operations.
09:01

Moving rear and front in Circular Queue
3 questions

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

Algorithm for Circular Queue operations.
04:15

Dry run Circular Queue operations using the algorithm.
2 questions

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

Implementation of Circular Queue.
05:06

Introduction to the concept of double ended queue.

Introduction to Double Ended Queue
04:54

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

Algorithm development for Double Ended Queue operations.
04:31

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

Dry run of the DEQ algorithm.
06:50

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

Implementation of Double Ended Queue.
08:55
+
Linked List
3 Lectures 14:42

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

Introduction to Linked List.
07:31

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

Preview 05:07

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

Categories of Linked List - Singly, Doubly and Circular Linked List.
02:04

LinkedList Introduction
9 questions
+
Singly Linked List
18 Lectures 02:20:50

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.

Understanding the 'struct' type we need for implementing singly linked list.
02:34

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.

Preview 05:48

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

Developing Insert At Tail operation - Add a new node as last node.
08:35

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

Implementing Insert at Head - Add a new node as the first node.
10:04

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.

Traversing the linked list - printing the content of each node.
09:00

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.

Printing the detail of each node of the linked list.
04:14

Just compiling and running the programme written so far. 

Compiling and executing the program written so far.
08:05

A practice exercise for Singly Linked List.

Practice for Singly Linked List
00:52

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

Developing find operation - to search for a target in the linked list.
03:29

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

Load data from file and build the linked list.
09:18

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

Creating Linked List from randomly generated integer numbers.
06:07

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

Delete first operation to delete the first node.
07:39

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

Delete last operation to delete the last node.
09:53

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

Delete a node that contain a target data.
22:55

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.

Reverse the linked list.
09:35

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

Traverse the singly linked list recursively.
07:56

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.

Implementation of Stack using singly linked list.
07:41

Lets us build a queue using Linked List data structure.

Implementation of Queue using Linked List
07:05
+
Doubly Linked List
7 Lectures 01:16:33

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.

Introduction to Doubly Linked List.
02:07

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.

Starting the program to implement various operations for Doubly Linked List.
08:37

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

Implementation of Add First method to add a new node as the first node.
12:06

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

AddLast implementation to add a new node as the last node.
13:13

Find and Insert After and Insert Before operation.
16:41

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.

Deleting a node - delete first, delete last and delete a target.
16:11

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

Double Ended Queue using doubly linked list.
07:38
+
Circular Linked List.
4 Lectures 21:56

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

Introduction to Circular Linked List.
02:55

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

Insert operation for Circular Linked List.
07:15

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

Delete Node operation.
05:11

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.

Developing find and print operation.
06:35
About the Instructor
Shibaji Paul
4.7 Average rating
434 Reviews
8,117 Students
3 Courses
Programming Instructor with 14+ years of experience

Hi, I have been teaching computer science and programming since 2001. I did my M Tech in Computer Science and remained visiting faculty to the CSE department of Narula Institute of Technology. I have my own training institute where I provide training on various programming languages and technologies to the B Tech students on C, C++, Java, Android programming, Data structure and Algorithm, DBMS, SQL and PL/SQL.

In my class room I usually teach 100-150 students per semester on different subjects. With the udemy platform now it is possible to teach and spread my knowledge to thousands (may be more)of students across the globe, Udemy opens up vast opportunity for instructor like me and that with remuneration. I guess it's going to be a fantastic.

When I am not taking class I enjoy learning some new technologies. In my leisure time one could find me enjoying with my kids or gossiping with my beautiful wife over a container of tea. I am a "tea-totaller" (guess the meaning :) ) and hate smoking. I have a definite plan to launch an online course on topic "How to drink tea - the best way" on udemy for sure and also on "How to quit smoking - the best way".

Let's hope for the best, happy learning.