(i) Deques cannot be implemented using arrays. : false Justification: We can implement dequeue using circular array. We need to maintain two pointers rear and front. Ex : 1. Create an array of any element type like int [] dequeue. 2. Create two indexes front and rear and initialize them to 0. 3. Create an element capacity.(it should be length of an array - 1). (ii) If we require all add/remove operations to run in O(1) time, we cannot use a Deque implemented with a singly linked list. False Justification : In linklist there will be two pointers head and tail. Adding an element : tail -> next = newelement; newelement -> next = NULL; tail = newelement; These all are O(1) operation. Removing an element : head = head->next; O(1) operation (iii) A Deque can be used as a stack as well as a queue. : true Justification : Using as stack : You can use dequeue as stack by removing and inserting the element at one end. Using as queue : You can use dequeue as queue by inserting the element at front and removing at rear. (iv) Assume the Deque contains n elements and n is odd. The middle element is the e lement equidistant from either end. The middle element cannot be determined in O(1) time in any implementation : false Justification : You can achieve this in O(1) operation with the help of doubly link list. You will have to maintain a mid pointer to achieve this. You can move this pointer in either direction with previos and next pointers. Solution (i) Deques cannot be implemented using arrays. : false Justification: We can implement dequeue using circular array. We need to maintain two pointers rear and front. Ex : 1. Create an array of any element type like int [] dequeue. 2. Create two indexes front and rear and initialize them to 0. 3. Create an element capacity.(it should be length of an array - 1). (ii) If we require all add/remove operations to run in O(1) time, we cannot use a Deque implemented with a singly linked list. False Justification : In linklist there will be two pointers head and tail. Adding an element : tail -> next = newelement; newelement -> next = NULL; tail = newelement; These all are O(1) operation. Removing an element : head = head->next; O(1) operation (iii) A Deque can be used as a stack as well as a queue. : true Justification : Using as stack : You can use dequeue as stack by removing and inserting the element at one end. Using as queue : You can use dequeue as queue by inserting the element at front and removing at rear. (iv) Assume the Deque contains n elements and n is odd. The middle element is the e lement equidistant from either end. The middle element cannot be determined in O(1) time in any implementation : false Justification : You can achieve this in O(1) operation with the help of doubly link list. You will have to maintain a mid pointer to achieve this. You can move this pointer in either direction with previos and next pointers..