Stacks and queues have their own reason for being. The stack is a FILO (First In Last Out) or LIFO (in any case) structure, which can be implemented using arrays, linked lists, or other forms. Consider the browser history. You go to the site A β then B β then C β D. When the user moves forward, you first click (paste in the tail) the list of sites. This ensures that the current site is always at the top of the stack. 
Then, when the user clicks the back button, you pop at the top (removal from the tail is the same end that is used for insertion), which gives the last site visited - C. Thus, the concept of First In (which was site A) and Last Out (the last of these was site D, which, in turn, was the first to come out)
The same can be said about the queue, which is FIFO (First In First Out). Consider an example of a job queue. When completing a task, you (not counting any optimization algorithms) should serve the first one. This makes the queue an excellent data structure for processing jobs based on the first feed.
In both cases, you do not want to arbitrarily delete or insert elements in any index. No, this will lead to unwanted behavior. Hence the need for a stack / queue. I would like to emphasize once again that stacks / queues can be implemented by forcibly restricting linked lists.
Sorry for the poor image quality - I just painted it in paint.
source share