the two selectors are the same as for stackstop(queue)which gives the top element of queuethat is in the exampleand pop(queue)which gives the queue without the top element andas with stacksthe selectors only work for non-empty queuesso we again need condition which returns whether queue is emptyisempty(queuein later we shall see practical examples of how queues and stacks operate with different effect doubly linked lists doubly linked list might be useful when working with something like list of web pageswhich has each page containing picturea link to the previous pageand link to the next page for simple list of numbersa linked list and doubly linked list may look the samee [ howeverthe doubly linked list also has an easy way to get the previous elementas well as to the next element graphical representation non-empty doubly linked lists can be represented by three-cellswhere the first cell contains pointer to another three-cell or to the empty listthe second cell contains pointer to the list element and the third cell contains pointer to another three-cell or the empty list againwe depict the empty list by diagonal bar or cross through the appropriate cell for instance[ would be represented as doubly linked list as abstract data type "doubly linked liston an abstract level doubly linked list can be constructed by the three constructorsemptylistthe empty listand