 Welcome to the course on data structures and algorithms. In this and the next two sessions we will examine the implementation of queues. In this session, we look at the basic elements of a queue. We already studied stacks. So, I would like you to remember and recall what we discussed when implementing stacks. Queues are the normal queue structures that we see. They permit us to insert a data element in the queue. Note that logically the new element coming in the queue must be inserted at the end of the queue. We will see how we achieve that in our implementation. Similarly, removing the data element from the queue is required whenever somebody leaves the queue, it will be left from the front. It is useful to have an illustrative example. So, here is a queue. He is the person standing in front, followed by him, followed by him. Please note that in a queue, the person always leaves from the front. But a new person comes in, he will join at the end. That is how the queue is in the real life. But when we implement it using memory structures such as arrays or linkedless, we will have to ensure that the equivalent effect is achieved independent of how we proceed in implementing the exact scenario of insertion and removal. Implementing queues will again require us to write certain functions. First of all, insert and remove. So, removal will be from the queue front, which is the main function. Insertion should logically happen at the end of the queue. There will be some additional actions required. I will need to create a queue for which I will need to define a queue and initialize a queue. Similar to the stack, we need to examine the status of the queue whether queue is empty or queue is full. If queue is full, we cannot add any more element in the queue. If queue is empty, we cannot remove any element from the queue front. And of course, we need to access the element at the front position. In short, we will have functions similar to what we did in stack. So, here we will have initialize, which will define and initialize the queue. We will have two functions empty and full to examine the status of the queue. We need to examine the front, which is similar to top of stack. We need to insert an element in the queue and we need to pop an element, which is removal from the front. So, we will write a function called front. These will be the functions that we will have to write to implement queues in our programs. Once again, we will be discussing two simple ways of implementing queues. One using arrays and another using linkless. We have already seen how to use these two structures arrays and linkless to implement stacks. So, you will have no difficulty in understanding how queues are implemented using these two structures. We shall see these implementations in the two subsequent sessions. Thank you.