Data Structures and Algorithms Full Course | Data Structures Tutorial For Beginners | Simplilearn

Simplilearn · Beginner ·⚡ Algorithms & Data Structures ·8mo ago

Key Takeaways

Implements efficient data structures and algorithms to solve complex problems using arrays, stacks, and graphs

Full Transcript

[Music] Welcome to SimplyLearn's full course on data structures and algorithms. Your complete guide to writing faster, smarter, and more efficient code. Let's start with a simple idea. Imagine your computer's memory as a giant bookshelf. How you organize that shelf determines how quickly you can find what you need. Now, that's exactly what data structures do. From arrays and link list to stacks, Q's trees and graph, each one has a unique purpose. Arrays keep things in order. Stack follows, last in, first out, and graph help map real world connection. Just like social networks, today companies are looking for developers who don't just code, but understand how to optimize code. The right data structure can make your program run lightning fast and save valuable resources. So in this course we will break down the fundamentals time complexity array stack trees and move on to all the way to binary trees graph and popular algorithms that power real applications. We'll also explore modern tools like GitHub copilot and AI encoding skills that give you an edge and by the end you will be ready to write efficient program solve complex problem and think like a real developer. So let's get started. Before we move on, here's a quick information. If you are interested to take your development skills to next level, then our Microsoft AI powered full stack developer program is designed to make your job ready in just 6 months. Imagine being able to build dynamic scalable user interfaces using React, NodeJS, Express, MongoDB while also leveraging cuttingedge AI tools like Chart GPT and Copilot to supercharge your code. And the best part is you will earn official certifications from Microsoft which will give your resume a significant boost. The program is designed for people who want to get hands-on with coding and understand the full process of developing a modern web app. Plus, you will have access to Git portfolio which is perfect for showcasing your work to potential employers. One of the best parts of this program is the AI powered job assistance. You will get help optimizing your resume and LinkedIn profile. mock interviews to prepare you for real thing and even custom job opportunities tailored for your skill set. The demand for AI powered full stack developers is growing rapidly and companies are looking for people who can combine traditional coding with cuttingedge AI tools. So how do you enroll now and you can find the course link below. >> The term raw data refers to the data in its most basic digital format. After defining data, let's look at what data structure entails. A data structure is a data organization, management and storage format in computer science that allows for efficient access and modification. Or a data structure is an algebraic structure about data that contains a collection of data values, their relationships and their functions or operations that can be applied to the data. We will now understand why exactly we need data structures now that we have already defined what is a data structure. So let us have a look at some of the data structure characteristics. The first one is each data structure allows data to be stored differently. Following that the data structure allows for more efficient data search and retrieval. Then specific data structures are chosen to solve specific problems. Last but not the least, it enables the management of large amounts of data such as large databases and indexing services such as hash tables. Let us now look at some real world examples of data structures. First and the foremost we have the dictionary. Assume that we're looking for the word simply learn in the dictionary and we know it begins with the letter S. So we can search for this word beginning with the letter S and then this is an example of array data structure. As a result, this dictionary can also function like an array data structure. Following by that we have a music player example. If you have a playlist with three songs, the second song will play after the first and the third will play after the second. So these will be played without any interruption because all these three songs are linked with each other using link list type of data structure. So followed by link list, the next example we have is the data structures. The stack of books analogy is a perfect example of the real-time working of the stack data structure. Subsequent to that, assume there is a line of people at a ticket window and the person who comes first gets the ticket. This particular movie window Q is an example for the real-time implementation of Q data structure. Last but not the least, Google Maps. Google map is the graph data structure in which all the cities and states are connected. If we want to go from one place to another, there may be many ways to do so. So we can use some algorithms to find the shortest path. As a result, the Google map is a perfect example for the graph data structure working analogy. Following that, we will look at some different types of data structures in this tutorial. So the first type is the linear data structure. The elements in the linear data structure are arranged subsequently one after the other. They are simple to implement because the elements are arranged in specific order followed by the first type. The second type is the nonlinear data structure which we will be discussing a bit later. So in linear data structures we have four different types. The first one is the array data structure. Memory elements are arranged in a continuous order in arrays and arrays elements are of same type. The software program also determines the type of elements that can be stored in arrays. So followed by arrays we have link list. Link list are completely similar to data structures. Data elements in link list data structure are linked together by a series of nodes. Furthermore, each node contains the data items as well as the address to the next node. The third data structure is the stack data structure. Elements in a stack data structure are stored using leo principle. In other words, the last element stored in the stack is remote first. In stack, operations can only be performed in one end, namely the top. And the last data structure is the Q data structure. Unlike stack, Q data structure operates in the FIFO principle which states that the first element stored in the Q is remote first. In a queue, insertion and deletion are carried out from opposite ends. Now we will discuss the second type of data structures which are the nonlinear data structures. The nonlinear data structure is the second type of data structure. Nonlinear data structures do not have elements in any order as opposite to the linear data structures. Instead, they are arranged in hierarchal order with one element connected to one or more others. So the first one in the nonlinear data structures is the tree data structure. A tree data structure is built using nodes and edges. Each element in the tree data structure is called as node or vortex. Each vertex or node is connected to the other nodes or other vertices using edges. And the second one in the list is the graph data structure. A graph data structure is completely like a tree data structure. It also has the vertices and edges. Each vertex in a graph data structure is connected using edges. The only difference between a tree and graph is that in tree you can have n number of vertices but in graph you will have only two vertices. After discussing the graph data structure we will move ahead into the last segment of this tutorial that is importance of data structures. So the first one data structures are widely used in almost every aspect of computer science both for simple and complex computations. Next, data structures are used in all areas of computer science including artificial intelligence, graphics, big data, operating systems and much more. After that, the data structures are an essential component of many computer algorithms because they allow programmers to manage data efficiently. Lastly, a proper data structure of selection can improve the efficiency of a computer program or algorithm. Introduction to time complexity. The time complexity of an algorithm is the amount of time it takes to run as a function of the length of that input. The length of the input determines how many operation the algorithm will do. It will provide the information about the variance increase or decrease in execution time as the number of operations in an algorithm increases or decreases. Next up are types of time complexity. We will start with the constant time complexity. Then we will discuss linear, logarithmic, quadratic time complexity. Now let's have a look at them in the detail. First constant time complexity. When an algorithm is not reliant on the input size n, it is set to have constant time of order bigger of one. The runtime will always be the same regardless of the input. As you can see in the code, every line has the runtime of one and they are all independent of any input size. So the runtime is always constant. Next up, linear time complexity. When an algorithm's running time increases linearly with the length of in the input, it is set to have linear time complexity. When a function checks all the values in an input data set, it is set to have the time complexity of order of bigger of n. As you can see in the code, the loop depends on the size n. So the time complexity rose up to n. Next up, logarithmic time complexity. When an algorithm lowers the input data in each step then it is set to have the logarithmic time complexity. Binary trees or binary search functions are some of the algorithms with logarithmic time complexity. As you can see in this code by finding out the mid in every iteration the runtime will decrease every step making it approximately logarithmic runtime. Next up, quadratic time complexity. When the execution time of algorithm rises nonlinearly up to n² with the length of the input, it is set to have quadratic time complexity. In general, net nested loops falls into the quadratic time complexity order where one loop takes bigger of n and if the function contains the loop inside the loop, then it multiplies. As you can see in this code, because of the nested loops, the time complexity rose to n². Now that you have the firm grasp of time complexity and its type, we will discuss essential steps to evaluate the time complexity. To understand this, we will take take an example of Fibonacci number. This code prints the Fibonacci numbers till n. We will divide this code into three parts isolating all the loops that play a significant role in altering the time complexity. Let's look at the first part. It consists of some independent statement which give constant runtime for each statement. Next, let's move on to our next part that is for loop. Since this loop runs n times, this will give linear time complexity on n. Next up, the third part which also has the constant time complexity. Now let's take a total of runtime which comes out to be n + 5. We will then discard the constant part to find the time complexity which does not affect the overall time complexity. Now we will have the final time complexity of bigger of n. We have now discussed time complexity and how to evaluate it. Now let's have a look at the time complexity of various algorithm. We will look at the time complexity of insertion sort, merge sort, quick sort, bubble sort and some searching algorithms like linear search and binary search. Let's look at them in the detail. First up, insertion sort. As you can see in this code, we are using nested loops. So in worst case, its complexity comes out to be n². Now in the best case scenario, the complexity will be linear time complexity. Next up, merge sort. In this case, whether it is the worst case or the best case, it will always remain n login as every statement in this code will run the same amount. So no matter what its time complexity will remain the same. Next up, quick sort. The time complexity of quicksort in the best case is n login and in the worst case it is n². Next up, bubble sort. As you can see in this code, we are using nested loops. So in the worst case, its complexity comes out to be n². Now in the best case scenario, the time complexity will become the linear time complexity that is n and after that we will discuss some of the searching algorithms. First up linear search. In the best case scenario, if the statement to be searched is at the first position, then the time complexity will come out to be constant. Whereas in the worst case, the time complexity will come out to be n. Finally, binary search. In the best case scenario, if the element is to be searched is at the mid, then the time complexity will come out to be the constant. Whereas in the worst case scenario the time complexity will come out to be bigger of login. We have now discussed the time complexity and how to evaluate and the time complexity of various algorithm. Now let's sum up what we have learned from this session. First up the execution time increases with the types of operations we make using the inputs. Next up, the lesser the time complexity, the faster is the execution. Finally, if a code is of hundreds of lines, then it takes a toll on the PC's processor. So, it is essential to check and reduce the time complexity as much as we can. Let's get started with what are pointers. A pointer is a variable that points to an address of another variable. It is declared using a star symbol also called asterisk and then we allocate a memory of a variable to it. We can access a variable's address using the amp% symbol in the same manner as the pointer declaration. Let's write a code. We will declare a variable a= 5 and a pointer ptr. Then we will assign this variable a value to pointer ptr. Now let's write a print statement to directly access the variable's value using variable name. Let's write another print statement to print the value of a using pointer. Let's try and execute this program. As you can see, we have successfully accessed variables value using both variable name and pointers. Let's get back to our slides. Now, let's discuss different types of pointers. First up, null pointer, void pointer, while pointer and dangling pointer. Let's discuss these in details. First up, null pointer. It is a kind of pointer that points to a null memory. As you can see in the figure, here is a pointer which is pointing to a null memory. To get a better understanding, let's try a simple program in the code editor. Let's write a code. First we will declare a pointer where we will assign its value to null. Now let's try to print this statement. Let's execute this. As you can see, since this pointer points to a null or nothing, that's why it doesn't print anything. Let's get back to our slides. Next, void pointer. When a pointer is created with data type void, then this pointer is called void pointer. If you want to print the variable's value, then we have to type cast this pointer to avoid any error. For better understanding, let's get back to the code editor and try it with a simple code. First we will declare an integer variable a = to 5 and a void pointer ptr. Now we will assign address of a to pointer ptr. Let's write a print statement to print this pointer. Let's run this program. As you can see, we are getting an error. That's because we can't print a void variable. In this we have to type cast this variable to integer. Let's do this. We can type cast a variable like this. Now let's print this. As you can see we can print it. Now let's get back to our slides. Next, while pointer when we create a pointer but don't initialize it by assigning any memory to it, then this kind of pointer is called wild pointer. These pointers can be very tricky. They can even cause a program failure or a segmentation fault. Let's get back to the corator and try it with a simple code. First, let's declare a pointer ptr. But we will not assign it with any address. Let's write a print statement to print it. This time we will directly print it. Let's execute this. As you can see, we are not getting any results because there is no value assigned to it. Sometimes it may even throw segmentation error. Let's get back to our slides. Next, dangling pointer. Let's suppose there's a pointer P which is pointing at a variable. Now if we deallocate this memory using a free function then this pointer will point at a free space or a non-existing memory then this pointer will become a dangling pointer. To get a better understanding of this pointer let's try it with a simple code. Let's declare a pointer ptr. Here we will dynamically allocate memory using a mop function. To do this we will put int star in a bracket then lock function then in another bracket we will put memory size to be allocated. Now let's declare a variable A and assign its address to the pointer. Now to make it a dangling pointer we have to deallocate the memory of this pointer. We will use free function for that. Now let's write a print statement to print this pointer. Let's execute it. As you can see, since we have deallocated its memory, that's why it is pointing to nothing. Hence, it doesn't print anything. Let's get back to our slides. Till now we have discussed pointers, ways to access variables and types of pointers. Now let's talk about use cases of pointers. We will talk about pointer arithmetics, pointer to pointer, array of pointers, call by value and call by reference. Now let's dive right into it. Let's talk about pointer arithmetics. We can use four arithmetic operations on pointers. increment, decrement, addition, or subtraction of an integer from a pointer. Since pointer operates on addresses, it only makes sense if we apply pointer arithmetics on sequential data structures like arrays or strings. Let's discuss them in detail. First up, increment. If we apply this operator on a pointer, then it will shift this pointer's address to its sequential successor. As you can see in the figure, as we increment the pointers value, we shift to the next index of the array. Let's get back to the code editor and try it with a simple program. Let's declare an array of size three. Let's give them some value. We will then declare a pointer and assign it to the array's first element. Now let's write a for loop to traverse this array. In this for loop, we will increment a pointer value and print this pointer value to traverse this array. Let's try and execute this program. As you can see, we have traversed this complete array. Let's get back to our slides. Next, decrement. If this operator is applied on a pointer, it will shift this pointer's address to its sequential predecessor. As you can see in the figure, as we decrement this pointer, we also shift to array's previous index. Let's get back to the code editor and try to implement it. Let's declare an array of size three and assign it some values. Now let's declare a pointer and assign arrays last elements address to it. Now let's write a for loop to traverse this array. In this for loop, we will decrement the pointers value. Also, we will keep printing this pointers value to travel this array. Let's try and execute this program. As you can see, we have traversed this complete array from the back. Let's get back to our slides. Next, the addition of an integer to a pointer. If this operator is applied on a pointer, it will leak forward accordingly. If the integer is two and our pointer points at the first element, then the pointer will sequentially skip one element and shift to the next element. Let's implement it in the code editor. Let's declare an array of size seven and assign them some value. Then declare a pointer and assign it to the array first element. Now let's take an integer n to add in the pointer. Now let's write a for loop to traverse this array. in. In this for loop, we will increment the pointer value with integer n and we will keep printing the pointer ptrs value. Let's execute this code. As you can see, we have traversed this complete array skipping one element at a time. Since we have skipped three elements that's why we are getting last three values as garbage values. Let's get back to our slides. Next subtraction of an integer from a pointer. If this operator is applied on a pointer then accordingly it will leap backward. If the integer is two and our pointer points at the last element then the pointer will skip one element and ship to the previous element. Let's try and implement it in the code editor. First, let's declare an array of size 7 and assign it some values. Then declare a pointer ptr and assign it to the array's last element. Now let's take an integer n to subtract from the pointer. Now let's write a for loop to traverse this array [Music] in In this for loop, we will decrement the pointers value with integer n. Also, we will write an print statement to print this ptrs value. Now let's try and execute this program. As you can see we have traversed this complete array from back skipping one element at a time. Since we have skipped three elements that's why we are getting last three values as garbage values. Let's get back to our slides. Let's talk about precedence of these operators. Operator asterisk and me% have the same priority as the unary operator increment and decrement. These operators are evaluated from right to left. Let's understand this concept with an example. Suppose if a pointer P points to a variable X then we can swap X with pointer P in that expression. In the first row, we have y = to x + 1. Which means we are storing an incremented value of x in y. Similarly, if we replace x with a pointer p, we can store incremented value of pointer in y. In row two and row three, we are incrementing x and storing incremented value in x itself. We can do this with pointers as well. In row four, we are attempting to execute pre-increment with a pointer P. In row five, we are attempting to execute post increment with pointer P. Here we have to put star P in braces because these operators are evaluated from right to left. So to give more priority to pointer P, we have to use braces as they have highest priority. Let's talk about another use case. Pointer to pointer. Basically in this situation a pointer will point at a variable via another pointer. We declare it with two extrasic symbol. Let's discuss it with an example. Suppose a pointer one points to a variable and another pointer two points to that pointer one. This way pointer two will indirectly be pointing to the variable. Let's go to the code editor and try implementing it. First we will declare a variable where a pointer ptr1 and a pointer to this pointer ptr2. Then we will assign this variable V address to PTR1 and PTR1's address to PTR2. Now we will write a print statement to print variable where ptr 1 and ptr2 Now let's try and execute this program. As you can see ptr 1 and ptr2 shows variable v value as ptr2 is pointing to ptr1 and ptr1 is pointing to that variable. So indirectly ptr2 points to the variable where thus it prints the variable's value. Let's get back to our slides. Let's discuss the array of pointers. As the name suggest it is an array that has all its elements as pointers. These pointers can be pointing at another array. It is declared as an array with asterisic symbol. Let's discuss it with the program. First we will declare an array A of size three. Then we will declare a pointer array ptr of size three. Now we will write a for loop to assign a element's address to ptrs element. Then we will write another for loop to traverse ptr and print its element. Let's try and execute this program. As you can see, it prints the value of array A's elements because array ptrs elements are pointing to array A's elements. Let's get back to our slides. Next call by value. We don't use pointers in this concept but it is very important to understand this concept to get better understanding of the next topic call by reference. In call by value we call a function and directly pass the variables value as parameters. In this situation a copy of those variable is created and get passed into a function as parameters. If you modify these parameters, it will not affect actual variables. Rather, these copies will get deleted as soon as the function body ends. Let's try implementing it in the code editor. Let's write a code. First, we will declare a variable x= to 100. Then we will write a function called to function funk with argument x. Next we will write a print statement to check if any changes happened due to the function. Now let's write definition for this function. We will take a void function with argument as x. In this first we will set x= to 200 and then we will write a print statement to print this Let's try and execute this program. As you can see here when we get back to the main block from function its value again reverted back to 10 because in call by value program we only pass variables copy into the function not the actual variables. Let's get back to our slides. Next call by reference. In this if we call a function but this time we pass the variables address as parameters then in this situation actual variables will get passed into the function as parameters. If we modify these parameters it will modify the actual variables even outside the function scope. Let's try implementing it in the code editor. First we will declare a variable int x= to 100. Next we will write a function call for function funk with argument as address of x. Then we will write a print statement to check if any changes happened due to the function. Now let's write definition for this function. It will be a void function with argument as pointer x. In this we will first set x equals to 200. Then we will write a print statement to print this value of x. Now let's try and execute this program. As you can see this time variable access value didn't revert to 100. That's because in call by reference we pass actual variables address to functions. So it will modify them as well. Let's get back to our slides. During the course of this video, we have learned a lot about pointers. Let's discuss some advantages of the pointers. First up, pointers are useful to access a memory location. Pointers are also an effective way to access the array elements. Pointers are used for the dynamic memory allocation and its distribution. Pointers are also used to build complex data structures like link list, graph, tree, stack, Q, etc. Now let's talk about some disadvantages as well. First up, pointers are difficult to understand. So a programmer needs to be careful while handling them. They might raise some errors like segmentation error or access some unrequired memory and cause program failure. If a pointer is pointing to a incorrect value, then it might corrupt memory. Pointers may also cause memory leakage. Also, pointers are slower than variables. At last, let's sum up what we have learned in this session with key takeaways. First up, a pointer is simply a storage location for a data in a memory. We can use pointers to traverse array more efficiently. We can also use function pointers to call a function dynamically. We can perform arithmetic operations on pointers as well. When we define an array of pointers, its elements can also points to function making it easier to call different function at once. Why did we actually need an array? So to understand this, let's go through a simple concept. Let us imagine that we have some data and the data is related to students. Right? So if we wanted to store the marks of individual students then we had to declare a variable for each of the student. So you can see we have student one, student two, student 3, four and five and their individual scores. So the score one is assigned to student one and so on with student five being assigned to score five. So in the real time this might be a little clumsy. We have here just five students. So that is okay. But what if we had 500 students or 5,000 students right? That might be an issue there. We have to create some 500 or 5,000 variables and it would be a little tough to handle that. Right? Even if we wanted to apply some operations collectively on all the variables, that might be a little tedious. So, what if we had one variable which could store all the five students or 500 students or 5,000 students all together and make it really easy for us to apply some operations collectively on all the students, right? This sounds a little bit logical. So similarly we do have a data structure which can do that which can collectively store all the data elements in it as a single variable and it will also help us to apply the operations which are logical or mathematical on all the variables and their values together as a whole. So that is the purpose why we had created arrays. That is the purpose why we needed arrays. So far we have understood what was the necessity for arrays. Now we will understand what exactly are arrays. So basically an array is a linear data structure that stores the elements in a sequential manner one after the other. And when you declare an array the variables will be stored one besides the other that is adjacent to each other in a sequential order. Now let us understand how the array is represented by the compiler. Now the next part that is the memory representation of arrays. Now let us imagine that we have declared an array which stores character type data. And another important point to remember about arrays when you declare an array, it stores only a single data type typed elements only. For example, here we have declared a character type array. Right? So we cannot store integer type data or float type data in it. we only have to save character type array or character type elements in this particular array. So now let us imagine that we have created an array which is of character data type and these are the elements which are a r a y. Now how does the compiler represent it in the form of memory. So when you create an array these are formed that is the index values and the address. So basically compiler will select a block of memory and it has addresses to that block and it can be anything right here we have 11 12 13 14 and 15 and in real time it might be 1,0001,0002,0003,0004,0005 the main moto is assign a sequential block of memory and this is the array and the elements are a r a y and this particular one which is the last one is the index of the array that is the position of the array for user. So using this index you can access the elements in the array. More on that in the accessing part. So let us imagine that we wanted to access the element R. So how to access it? We might not know the address, right? In that instance we will use the index. This is for our reference. So we will tell I want the element from array index number two and then we'll have the a r element. So in the practical form this is how we use the index. Now let's continue with the lower bound and the upper bound. So the first initial location is called as the lower bound and the last or the max value of the array is called as the upper bound. Now let us jump into the next topic where we will understand the different types of arrays. So these are the different types of arrays. one-dimensional arrays and multi-dimensional arrays. In multi-dimensional arrays, we have two more types that is two-dimensional arrays and three-dimensional arrays. So, how are arrays different from each other, right? So, the first one we'll deal with the first one that is the one-dimensional array. Now, how is an array declared as one-dimensional? For that, we need subscript. So one-dimensional array requires only one subscript to specify the number of elements in an array. So how is it actually represented? So here you can see an example right on my screen. So here is how a one-dimensional array looks like. So here we have the data type that is integer data type and marks is the name of the array and this is the size of the array and here the elements will be stored and here it is the index value of the array and remember the index value of array always starts from zero. In the previous example that was only for basic understanding so I just started that with one. In the practical way, the array index always starts from zero. So followed by the one-dimensional array, we will deal with the multi-dimensional arrays. In that we have the following. The first one is the two dimensional array and the second one is the three-dimensional array. In the multi-dimensional arrays, we require more than one subscript. In the previous example, we had one-dimensional array. So the subscript is just one that is 10 columns right? So we just had one single row and 10 different columns. But in the multi-dimensional arrays we need multiple rows and multiple columns right. So we need two subscripts for two dimensional array and more than two subscripts for three-dimensional arrays. So first we have the two-dimensional arrays. The 2D array is organized in the form of a matrix which can be represented as a collection of rows and columns. So here is the example. As you can see on my screen, we have three columns and three rows. And we have two subscripts that define the number of rows and the number of columns and the elements in each and every row. So the 1 2 3 confines the first row. 4 5 6 confines the second row and 7 8 9 will be the third row. Now similarly we have threedimensional arrays. A 3D array is a collection of 2D arrays which consists of three subscripts. Block size, row size and column size. So here we have an example for that. So we have three subscripts that is the first one is block size, the second one is the row number and the third one is column number. So this happens to be the first block. This happens to be the second block. And this is how a three-dimensional array can be represented. Now we have the next stage where we will understand how to declare the arrays. And the syntax is right on my screen. You need to specify the data type of the array which is integer, float or character any selection which you make. Followed by that you need to select an array name for your array and inside that you need to declare the array size. And sometimes you can also eliminate the array size if you wanted to you know have a dynamic array. And here is an example for that. You have integer data type name of the array is example and the array size is six. So the compiler will allocate continuous memory block of six integer type blocks. So these are the few more methods to initialize the array. So here you can see integer data type array name is a element size is five and we have five elements. The method two is remember I've said you can eliminate the size of the array right so here you can use this way as well integer data type array name a and no size here and you can directly declare the elements and the method third. So here you have the name of the array, size of the array and you are allocating the elements to the individual memory locations. This is also another method to initialize array. And method four is using a for loop. You can just initialize a for loop and the i value will be stored in the array locations starting from zero. Now let us understand how to access the elements in an array. So to access the elements in an array, you need to specify the name of the array and memory block where you have that element that you want to access. So here we have an example which is integer data type. Name of the array is XY Z and the element we wanted to access is five. So here we have an example that is integer type array. Array name is XY Z and it has the size five. And now we wanted to access the first element in an array that can be done using the first index that is XY Z of zero index that is the first element and accessing the second element and so on. XY Z of one will be the second element. XY Z of 2 3 4 will be the third and fourth and fifth elements. Now let us understand some basic operations that can be performed on the array elements. So the following are the operations that can be performed on the array elements that is the traversal, insertion, deletion, searching and sorting. Now let us get into practical mode and try to execute some examples based on traversal of the array, insertion of an element into the array, deletion of an element from an array, searching for an element in an array and sorting the complete array. So at first we'll carry out the traversal operation. So here we have an array that is a of five and the elements are 1 2 3 4 and 5. Now we're going to use a for loop to traverse through this array and print all the elements sequentially. Now let us execute this code and see the output. So as you can see the code got successfully executed and the elements that is 1 2 3 4 and 5 from the array A are printed sequentially. Now moving ahead we'll try to execute some examples based on insertion of element into the array. So on my screen you can see an example for inserting an element into the array at the starting position of the array. Now let us try to execute this code and see the output. Don't worry about the codes. These code documents will be attached in the description box below and you will be able to have an access to it and run these codes in your personal laptop and get a better learning experience. Now you can see the code got successfully executed and now it is asking for the size of the array. Let's declare it as five. And now let's enter the elements into the array. Now it is asking for the element to be added at the beginning of the array. Now we have 2 3 4 5 and six existing in the array. Let's add the first element 1. And there you go. The resultant array is 1 2 3 4 5 and 6. The element which we added at the ending which is one is supposed to be in the first or the beginning part of the array which is here at at the first index location as planned. Now let's get started with an other example on the insertion. Now let's try to insert an element at any given location as per the user's choice. So as you can see we have a program on my screen and running this program must help us to insert an element into any given location of the array. Now let's try to quickly run this program and see the output. So there you go. Enter the elements into the array. Let's enter 1 3. Let's try to run this program and see the output. So there you go. The program got successfully executed. And now the output is asking for us to tell it the number of elements in an array. Now let's say four elements. So now let's enter the four elements. 1 3 4 5 and 6. Okay. So the four elements which is 1 3 4 5 are been inserted. Now it is asking for the location where you want to insert the element. Now let us insert it in the second location. Now let us set the value as two. And there you go. The resultant array is 1 2 3 4 and 5. And the element which is two was supposed to be added in the second location. and it has been successfully added. Now let's try to execute another example based on insertion where you will try to insert the element in the last position. Now this program on my screen will help us to add an element at the end of the array. Let's quickly run this program. Now it is asking for us to enter the five elements of the array. Let's enter that. Now it is asking to enter the element to be inserted. Now let us enter the element and this element should be added at the end location as discussed. The resultant array is 135 79 and 11. Now let's continue with the deletion operation. Now the program on my screen is an example for deleting an element from the beginning position of an array. Now the program got successfully executed and it's asking for us to enter the size of the array. Let's enter the size as five. And now let's enter the elements of the array that is 1 2 3 4 and 5. Now the element from the first location that is 1 has been deleted and the resultant array is 2 3 4 and five. Now the code on my screen will help you to eliminate the element from the ending location of an array. Now let's try to quickly run this program and see the output. So you can see that the program is successfully run and it is asking for us to enter the size of the array. Let's enter four. Now let's enter the elements of the array that is 1 2 3 and four. Now after eliminating the last element from the array that is four, we have the resultant array that is 1 2 and 3. Now a little homework for you guys. Let's try to execute an example for deleting an element from any location of an array. This will be a homework. Now don't worry try on your own and if you don't get that you can refer to the comment sections below where you have the code document attached in the description box and you can refer to it. Now let's continue with the next operation where we will search for a given element in the array. So you can see that on my screen we have an example which will help us to sort the elements in an array. Let's quickly run this. So there you go. The program got successfully executed and now it's asking for the array size. Let's enter a file. And now let's enter the elements in a random order. [Music] Now the resultant array should be sorted. So there you go. The array after being sort is it's 2 3 5 14 and 21. So there you go, the array got sorted. So now we have finished our practical session. Let's have a quick overview again. So traversal in an array is a process of visiting each element once. Traversal can be done by various means that is by counting the array elements, printing the values sorted in the arrays and sum of all elements present in the array and many more. So this is how we traverse our array from the first location to the last location. Again the insertion operation. Insertion in an array is the process of including one or more elements in an array and it can be done at the beginning, at the end and at any given index of an array which we executed for all the three types of examples. Now next we have the deletion operation. So deletion operation or deletion of an element is a process of removing a desired element and reorganizing the array and it can be done at the beginning, at the end and at any given index. So we have executed the example for at the beginning and at the end and the homework was at the given index. Don't worry if you don't figure it out you can always refer to the example document which is mentioned in the description box below. Now the search operation searching is a process of finding a given value in the list of values and it decides whether the search key is present in the array or not and we have executed an example on that. And again the sort operation where we will sort the given array. If the given array is not in the default order or in a given order that is ascending or descending then we can sort the order of the array by the user's choice given it is ascending order or descending order. Now in the next section of the tutorial we will discuss the advantages of using arrays. So the first one is array stores multiple elements of same data type with same name. Next one elements in an array can be accessed randomly using just the index number. Array memory is predefined so there is no extra memory loss. Array avoids memory overflow. And finally 2D arrays can represent the tabular form of data in a very efficient way. Now let us also have a look on some of the disadvantages of using arrays. The first one the number of elements in an array should be always predefined. So there is no chance that you can add some extra element in the last moment. Array is static in nature. So its size cannot be varied after declaration. What if consider you wanted to store 10 student data in one array and you end up having just seven students. So the remaining three is a waste right. So you're wasting memory there. That's the problem. And insertion and deletion operations in an array is quite difficult as the array stores elements in a continuous form. And finally allocating excess memory than required may lead to memory wastage. Now we have the final key takeaways of the arrays. So we discussed why do we need arrays? Then we discussed what are arrays. Followed by that we discussed types of arrays. Next we had a declaration of arrays, accessing elements from an array, initializing the arrays and basic operations on array. That is the practical demo part and finally we have discussed the advantages and disadvantages of using an array. What are arrays? So we will see a brief definition of arrays. The array is a data structure that stores elements of the same data type in a sequential order. Two-dimensional arrays are considered as an array of arrays. Twodimensional arrays represent the information in the form of rows and columns which is completely similar to a tabular form of data following by the definition and briefing of the two-dimensional arrays. We will understand the need for two-dimensional arrays. So the main advantage of using a two-dimensional array is the elements can be represented in the form of a matrix that is rows and columns. Using two-dimensional arrays, we can initialize, access and print multiple elements in the matrix form by just running one single code segment. You can see an example right on my screen here. This is an example of marks list. Suppose a class has three subjects namely English, science and maths. We have four students and we wanted to represent the data in the form of a database. So here the marks of the four students can be represented using two-dimensional arrays. Now we will see the syntax of a two-dimensional array. So here the syntax at first we need the data type. The data type can be integer, character, float, string, etc. Then we have the name for the two-dimensional array. And later we can have two subscripts which represent two dimensions that is the rows and columns. The first subscript defines the number of rows and the second subscript defines the number of columns. And note that the column number can never be null. At the end we have a semicolon to terminate the syntax. And here we have some examples of two-dimensional arrays. So in the first example we have the name of the two-dimensional array. And we have three rows and four columns. And followed by that we have another example which is of character data type. And the name of the array is names. And we have seven rows and 15 columns. Next we will see how to visualize two-dimensional arrays. We read earlier that two-dimensional arrays are a collection of rows and columns. Let's see an example of two-dimensional array. We will consider an array with six rows and four columns. As you can see on my screen, we have integer type array and the name of the array is array and we have six rows and four columns. The product of rows and columns will give us the total number of elements present in a two-dimensional array. In the current example, we have six rows and four columns and the product is 24. So, we must have 24 elements in this array. Next, we will see how to initialize two-dimensional arrays. So, there are two ways to initialize a two-dimensional array. So in the first method we declare the elements in the set of curly brackets. This array consists of three rows and three columns. Note that the index always starts from zero. Here we have three rows. It means the row starts with zero and ends with two. The same goes for the column. But sometimes this method might be a little confusing. So we have a better method. The advantage of this method is clarity. We can visualize all the elements with better clarity compared to the previous method. So the first three elements are 9 6 and 1. They are present in the first row. And in the second row we have 144 70 and 50. They comprise the second row. And finally the third row in which the elements are 10 12 and 78. So far we have learned how to visualize and initialize a two-dimensional array. So we have done it by using the index values that is the row index and the column index. So the row index value was three and the column index value was three. For accessing an element in the two dimensional array, we need to pass the name of the two-dimensional array followed by the row index value and the column index value. For example, let us assume that we wanted to access the element 9. For doing so, we will pass the name of the array followed by the row index value and the column index value as shown below. That is int first 0, 0. And an important point here is indexing always starts with zero. We will now start printing the two-dimensional arrays. So to print a two-dimensional array, we will be using two nested for loops. So to understand the process of printing the two-dimensional array, let's get back to the practical mode and we will work on a code. So on my screen you can see an example for two-dimensional array. So here we have declared an array with the name first and we have three rows and three columns and inside that the first row of elements is 9 61 and the second row of elements is 144 70 and 50 and the third row of elements is 10 12 and 78. Followed by that we have two counter variables which are I and J. So we are using the first counter variable I in the outer for loop and the second counter variable J in the second inner for loop and inside the inner for loop we have a print statement which is used to print the elements in the array. Now let us try to execute this code and see the output. So you can see the code got successfully compiled and we have our elements here which is 961 144 70 50 10 12 and 78. Now let us understand the logic. So here we have declared the counter variable as zero and the condition is I should be less than three which is true. So the control will enter into the sec

Original Description

🔥AI-Powered Full Stack Developer Program - https://www.simplilearn.com/full-stack-developer-course-mern-certification-training?utm_campaign=M_JSNj-Tcg0&utm_medium=DescriptionFirstFold&utm_source=Youtube 🔥Full Stack Java Developer Program - https://www.simplilearn.com/java-full-stack-developer-certification?utm_campaign=M_JSNj-Tcg0&utm_medium=DescriptionFirstFold&utm_source=Youtube 🔥Full Stack Developer - MERN Stack Program (Discount Code - YTBE15) - https://www.simplilearn.com/full-stack-developer-course-mern-certification-training?utm_campaign=M_JSNj-Tcg0&utm_medium=DescriptionFirstFold&utm_source=Youtube In this Data Structures and Algorithms Full Course 2025 by Simplilearn, we begin with an introduction to data structures, exploring core concepts like time complexity, pointers, arrays, and linked lists (singly, doubly, and circular). You’ll also learn about stacks, queues, and the differences between arrays and linked lists. The course then dives into algorithms, recursion, and essential data structures such as trees, binary trees, binary search trees, B+ trees, and various tree traversal methods. We also cover graphs, spanning trees, and deques to strengthen problem-solving skills. Finally, the course connects these foundations with AI coding for beginners, showing how DSA principles power real-world applications in artificial intelligence. The topics covered in this Data Structures Full Course 2022 video are: 00:00:00 - Introduction to Data Structures and Algorithms Full Course 2025 00:02:19 - Introduction to Data Structure - What are Data Structures - Time Complexity in Data Structures - Pointers in C Data Structures - Arrays in Data Structures - Two Dimensional Arrays in Data Structures - Linked List In Data Structures - Singly Linked List In Data Structures - Doubly Linked List In Data Structures - Circular Linked List In Data Structures - Array vs Linked List Data Structures - Stacks In Data Structures - Queue and Priority Queue In Data Str
Watch on YouTube ↗ (saves to browser)
Sign in to unlock AI tutor explanation · ⚡30

Playlist

Uploads from Simplilearn · Simplilearn · 0 of 60

← Previous Next →
1 Ethical Hacking Full Course 2026 | Ethical Hacking Course for Beginners | Simplilearn
Ethical Hacking Full Course 2026 | Ethical Hacking Course for Beginners | Simplilearn
Simplilearn
2 AWS Full Course 2026 | AWS Cloud Computing Tutorial for Beginners | AWS Training | Simplilearn
AWS Full Course 2026 | AWS Cloud Computing Tutorial for Beginners | AWS Training | Simplilearn
Simplilearn
3 Data Structures And Algorithms Full Course | Data Structures and Algorithms Tutorial | Simplilearn
Data Structures And Algorithms Full Course | Data Structures and Algorithms Tutorial | Simplilearn
Simplilearn
4 SQL Full Course 2026 | SQL Tutorial for Beginners | SQL Beginner to Advanced Training | Simplilearn
SQL Full Course 2026 | SQL Tutorial for Beginners | SQL Beginner to Advanced Training | Simplilearn
Simplilearn
5 Microsoft Azure Full Course 2026  | Azure Tutorial for Beginners | Azure Training | Simplilearn
Microsoft Azure Full Course 2026 | Azure Tutorial for Beginners | Azure Training | Simplilearn
Simplilearn
6 Shopify Tutorial For Beginners 2026 | Shopify Course | shopify dropshipping | Simplilearn
Shopify Tutorial For Beginners 2026 | Shopify Course | shopify dropshipping | Simplilearn
Simplilearn
7 Six Sigma Full Course 2026 | Six Sigma Green Belt Training | Six Sigma Training | Simplilearn
Six Sigma Full Course 2026 | Six Sigma Green Belt Training | Six Sigma Training | Simplilearn
Simplilearn
8 🔥Feeling Stuck? How Upskilling Can Boost Your Career! #shorts #simplilearn
🔥Feeling Stuck? How Upskilling Can Boost Your Career! #shorts #simplilearn
Simplilearn
9 Growth Hacking In Marketing | Learn Growth Hacking Marketing Strategies | Simplilearn
Growth Hacking In Marketing | Learn Growth Hacking Marketing Strategies | Simplilearn
Simplilearn
10 🔥Cracked 3 Job Offers with One AIML Course! | 20–30% Salary Hike #shorts #simplilearn
🔥Cracked 3 Job Offers with One AIML Course! | 20–30% Salary Hike #shorts #simplilearn
Simplilearn
11 Top 10 Must-Have Figma Plugins for UI/UX Designers in 2026 | Figma Plugins | Simplilearn
Top 10 Must-Have Figma Plugins for UI/UX Designers in 2026 | Figma Plugins | Simplilearn
Simplilearn
12 Business Analytics Full Course 2026 | Business Analytics Tutorial For Beginners | Simplilearn
Business Analytics Full Course 2026 | Business Analytics Tutorial For Beginners | Simplilearn
Simplilearn
13 Simplilearn Reviews | Getting future-ready with course in Artificial Intelligence | Roopam’s story
Simplilearn Reviews | Getting future-ready with course in Artificial Intelligence | Roopam’s story
Simplilearn
14 Generative AI Full Course 2026 | Gen AI Tutorial for Beginners | Gen AI Explained | Simplilearn
Generative AI Full Course 2026 | Gen AI Tutorial for Beginners | Gen AI Explained | Simplilearn
Simplilearn
15 Full Stack Developer Course 2026 | Full Stack Java Developer Tutorial for Beginners | Simplilearn
Full Stack Developer Course 2026 | Full Stack Java Developer Tutorial for Beginners | Simplilearn
Simplilearn
16 Simplilearn Reviews | How David Went From Seasoned Engineer to AI Innovator #GetCertifiedGetAhead
Simplilearn Reviews | How David Went From Seasoned Engineer to AI Innovator #GetCertifiedGetAhead
Simplilearn
17 Complete Social Media Marketing Strategy for 2026 | Social Media Marketing Strategy | Simplilearn
Complete Social Media Marketing Strategy for 2026 | Social Media Marketing Strategy | Simplilearn
Simplilearn
18 🔥Top 4 Cybersecurity Certifications You Need! #simplilearn #shorts
🔥Top 4 Cybersecurity Certifications You Need! #simplilearn #shorts
Simplilearn
19 🔥Cloud Engineer Salary in India 2026 | City-Wise Breakdown #shorts #simplilearn
🔥Cloud Engineer Salary in India 2026 | City-Wise Breakdown #shorts #simplilearn
Simplilearn
20 Digital Marketing Full Course 2026 | Digital Marketing Tutorial For Beginners | Simplilearn
Digital Marketing Full Course 2026 | Digital Marketing Tutorial For Beginners | Simplilearn
Simplilearn
21 Full Stack Java Developer Course | Full Stack Java Developer Tutorial for Beginners | Simplilearn
Full Stack Java Developer Course | Full Stack Java Developer Tutorial for Beginners | Simplilearn
Simplilearn
22 Social Media Marketing Full Course | Social Media Marketing Tutorial For Beginners | Simplilearn
Social Media Marketing Full Course | Social Media Marketing Tutorial For Beginners | Simplilearn
Simplilearn
23 How To Create LLM Chatbot Demo 2026 | Build a LLM Chatbot From Scratch | Simplilearn
How To Create LLM Chatbot Demo 2026 | Build a LLM Chatbot From Scratch | Simplilearn
Simplilearn
24 Digital Supply Chain Management Certification | Supply Chain Management Course | Simplilearn
Digital Supply Chain Management Certification | Supply Chain Management Course | Simplilearn
Simplilearn
25 AI Agents Full Course 2026 | AI Agents Tutorial for Beginners | How to Build AI Agents | Simplilearn
AI Agents Full Course 2026 | AI Agents Tutorial for Beginners | How to Build AI Agents | Simplilearn
Simplilearn
26 ITIL Full Course 2026 | ITIL 4 Foundation Course | ITIL Tutorial For Beginners | Simplilearn
ITIL Full Course 2026 | ITIL 4 Foundation Course | ITIL Tutorial For Beginners | Simplilearn
Simplilearn
27 Generative AI Full Course 2026 | Gen AI Tutorial for Beginners | Gen AI Explained | Simplilearn
Generative AI Full Course 2026 | Gen AI Tutorial for Beginners | Gen AI Explained | Simplilearn
Simplilearn
28 ITIL Full Course 2026 | ITIL 4 Foundation Course | ITIL Tutorial For Beginners | Simplilearn
ITIL Full Course 2026 | ITIL 4 Foundation Course | ITIL Tutorial For Beginners | Simplilearn
Simplilearn
29 Simplilearn Reviews | Integrating AI & Music | Diego's Story
Simplilearn Reviews | Integrating AI & Music | Diego's Story
Simplilearn
30 Digital Marketing Full Course 2026 | Digital Marketing Tutorial For Beginners | Simplilearn
Digital Marketing Full Course 2026 | Digital Marketing Tutorial For Beginners | Simplilearn
Simplilearn
31 SEO Full Course 2026 | SEO Tutorial for Beginners | SEO Training | SEO Explained | Simplilearn
SEO Full Course 2026 | SEO Tutorial for Beginners | SEO Training | SEO Explained | Simplilearn
Simplilearn
32 PMP Vs CAPM: Which Certification Should You Choose? | PMP Vs CAPM | Simplilearn
PMP Vs CAPM: Which Certification Should You Choose? | PMP Vs CAPM | Simplilearn
Simplilearn
33 Complete Data Analyst Roadmap 2026 | How To Become A Data Analayst In 2026 | Simplilearn
Complete Data Analyst Roadmap 2026 | How To Become A Data Analayst In 2026 | Simplilearn
Simplilearn
34 Generative AI Full Course 2026 | Gen AI Tutorial for Beginners | Gen AI Explained | Simplilearn
Generative AI Full Course 2026 | Gen AI Tutorial for Beginners | Gen AI Explained | Simplilearn
Simplilearn
35 🔥5 Jobs That Are Most Likely Safe from Layoffs in Today’s Market #shorts #simplilearn
🔥5 Jobs That Are Most Likely Safe from Layoffs in Today’s Market #shorts #simplilearn
Simplilearn
36 🔥Git vs GitHub – What's the Difference?
🔥Git vs GitHub – What's the Difference?
Simplilearn
37 What Goes Behind Building the Likes of Uber and Netflix? | Product Management Tutorial | Simplilearn
What Goes Behind Building the Likes of Uber and Netflix? | Product Management Tutorial | Simplilearn
Simplilearn
38 AI Agents Full Course 2026 | AI Agents Tutorial for Beginners | How to Build AI Agents | Simplilearn
AI Agents Full Course 2026 | AI Agents Tutorial for Beginners | How to Build AI Agents | Simplilearn
Simplilearn
39 Full Stack Developer Course 2026 | Full Stack Java Developer Tutorial for Beginners | Simplilearn
Full Stack Developer Course 2026 | Full Stack Java Developer Tutorial for Beginners | Simplilearn
Simplilearn
40 Product Life Cycle 2025 | Stages Of Product Life Cycle | Product Life Cycle Tutorial | Simplilearn
Product Life Cycle 2025 | Stages Of Product Life Cycle | Product Life Cycle Tutorial | Simplilearn
Simplilearn
41 Project Management Full Course 2026 | Project Management Tutorial | PMP Course | Simplilearn
Project Management Full Course 2026 | Project Management Tutorial | PMP Course | Simplilearn
Simplilearn
42 PCB Design Course 2025 | PCB Designing Explained | How To Make PCBs | Simplilearn
PCB Design Course 2025 | PCB Designing Explained | How To Make PCBs | Simplilearn
Simplilearn
43 Python Full Course 2026 | Python Data Analytics Tutorial For Beginners | Simplilearn
Python Full Course 2026 | Python Data Analytics Tutorial For Beginners | Simplilearn
Simplilearn
44 🔥Top Product Management Skills You Need to Succeed in 2026 #shorts #simplilearn
🔥Top Product Management Skills You Need to Succeed in 2026 #shorts #simplilearn
Simplilearn
45 SQL For Data Analytics 2026 | Essential SQL Commands | SQL Tutorial For Beginners | Simplilearn
SQL For Data Analytics 2026 | Essential SQL Commands | SQL Tutorial For Beginners | Simplilearn
Simplilearn
46 Simplilearn Reviews | Paving Way To Success With AI & ML Course | Soumik’s Upskilling Journey
Simplilearn Reviews | Paving Way To Success With AI & ML Course | Soumik’s Upskilling Journey
Simplilearn
47 Six Sigma Full Course 2026 | Six Sigma Green Belt Training | Six Sigma Training | Simplilearn
Six Sigma Full Course 2026 | Six Sigma Green Belt Training | Six Sigma Training | Simplilearn
Simplilearn
48 Learn Snowflake In 45 Mins | Snowflake Tutorial | What Is Snowflake | Snowflake Explained
Learn Snowflake In 45 Mins | Snowflake Tutorial | What Is Snowflake | Snowflake Explained
Simplilearn
49 🔥ML Career Tip – How to Start Learning Machine Learning in 60 Seconds! #shorts#simplilearn
🔥ML Career Tip – How to Start Learning Machine Learning in 60 Seconds! #shorts#simplilearn
Simplilearn
50 🔥Agile vs Waterfall in 60 Seconds #shorts #simplilearn
🔥Agile vs Waterfall in 60 Seconds #shorts #simplilearn
Simplilearn
51 Excel Full Course 2026 | Excel Tutorial For Beginners | Microsoft Excel Course | Simplilearn
Excel Full Course 2026 | Excel Tutorial For Beginners | Microsoft Excel Course | Simplilearn
Simplilearn
52 What Are AI Agents? | Types Of AI Agents | AI Agents Explained | AI Agents Tutorial | Simplilearn
What Are AI Agents? | Types Of AI Agents | AI Agents Explained | AI Agents Tutorial | Simplilearn
Simplilearn
53 How To Create a Product Roadmap In 2026 | Product Roadmap | What Is Product Roadmap | Simplilearn
How To Create a Product Roadmap In 2026 | Product Roadmap | What Is Product Roadmap | Simplilearn
Simplilearn
54 SQL Full Course 2026 | SQL Tutorial for Beginners | SQL Beginner to Advanced Training | Simplilearn
SQL Full Course 2026 | SQL Tutorial for Beginners | SQL Beginner to Advanced Training | Simplilearn
Simplilearn
55 🔥What Is Phishing? #shorts #simplilearn
🔥What Is Phishing? #shorts #simplilearn
Simplilearn
56 Cloud Computing Full Course 2026 | Cloud Computing Tutorial | Cloud Computing Course | Simplilearn
Cloud Computing Full Course 2026 | Cloud Computing Tutorial | Cloud Computing Course | Simplilearn
Simplilearn
57 Simplilearn Reviews | Overcoming Rejection & career plateau to finding a New Job : Bhaskar Banerji
Simplilearn Reviews | Overcoming Rejection & career plateau to finding a New Job : Bhaskar Banerji
Simplilearn
58 Six Sigma Full Course 2026 | Six Sigma Green Belt Training | Six Sigma Training | Simplilearn
Six Sigma Full Course 2026 | Six Sigma Green Belt Training | Six Sigma Training | Simplilearn
Simplilearn
59 Generative AI Full Course 2026 | Gen AI Tutorial for Beginners | Gen AI Explained | Simplilearn
Generative AI Full Course 2026 | Gen AI Tutorial for Beginners | Gen AI Explained | Simplilearn
Simplilearn
60 VLSI Design Course 2026 | VLSI Tutorial For Beginners | VLSI Physical Design | Simplilearn
VLSI Design Course 2026 | VLSI Tutorial For Beginners | VLSI Physical Design | Simplilearn
Simplilearn

Related Reads

Up next
Stump Grinder Carbide Wheel Grinds Hardwood To Chips
Innoforge Studio
Watch →