these adts can be seen as conceptual aids their functionality could be obtained using the underlying structure (such as an arraydirectlybut the reduced interface they offer simplifies many problems these adts can' be conveniently searched for an item by key value or traversed stack stack is used when you want access only to the last data item insertedit' last-infirst-out (lifostructure stack is often implemented as an array or linked list the array implementation is efficient because the most recently inserted item is placed at the end of the arraywhere it' also easy to delete it stack overflow can occurbut is not likely if the array is reasonably sizedbecause stacks seldom contain huge amounts of data if the stack will contain lot of data and the amount can' be predicted accurately in advance (as when recursion is implemented as stacka linked list is better choice than an array linked list is efficient because items can be inserted and deleted quickly from the head of the list stack overflow can' occur (unless the entire memory is fulla linked list is slightly slower than an array because memory allocation is necessary to create new link for insertionand deallocation of the link is necessary at some point following removal of an item from the list queue queue is used when you want access only to the first data item insertedit' first-infirst-out (fifostructure like stacksqueues can be implemented as arrays or linked lists both are efficient the array requires additional programming to handle the situation in which the queue wraps around at the end of the array linked list must be double-endedto allow insertions at one end and deletions at the other as with stacksthe choice between an array implementation and linked list implementation is determined by how well the amount of data can be predicted use the array if you know about how much data there will beotherwiseuse linked list priority queue priority queue is used when the only access desired is to the data item with the highest priority this is the item with the largest (or sometimes the smallestkey priority queues can be implemented as an ordered array or as heap insertion into an ordered array is slowbut deletion is fast with the heap implementationboth insertion and deletion take (logntime use an array or double-ended linked list if insertion speed is not problem the array works when the amount of data to be stored can be predicted in advancethe linked list when the amount of data is unknown if speed is importanta heap is better choice table special-purpose data-storage structures