((Explanation)) My program works completely. (vipQueueArray) I created an integer array to store the values, and built the appropriate methods to manipulate that array so that it could be used as a queue. The "currentIndex" property indicates where the next item should be added during the "Enqueue" operation, as well as how many indices the "EnqueueVip" method should consider during its loop. (vipQueueLinkedList) I chose to create a linked list that was very free form. I created a node class, which holds the expected properties of "stored value" and "next node". I used these nodes as the foundation of my Linked List Queue. The queue class creates nodes as needed. It keeps track of the first node so that operations like Dequeuing are possible, and it keeps track of last node so that enqueuing can be done quickly. The class property "currentCountOfNodes" is used to obey the size limit of the linked list. We instruct the user to check "isFull" before enqueuing and enqueuingVip. ((Test Plan)) For both implementations, I use white-box testing. (vipQueueArray) In the Enqueue method, the item is added to the appropriate index and the index is incremented so that subsequent additions will be in the appropriate place. This process is incredibly straightforward. In the EnqueueVip method, we traverse the array backwards, starting from the last item (which is kept track by the currentIndex variable), and each of the stored integers are shifted up an index. We then add the inputed item in the now essentially empty 0th slot. Thus, this method functions as expected. In the Dequeue method, we first store the value of the first position in the array, and then we traverse all of the elements in the array and shift them down an index. We then decrement the currentIndex, and then return the value that was originally on the front of the array. This method should work in all scenarios, then. The isFull and isEmpty methods are trivial, and their correct functioning rely entirely on the proper use of the "currentIndex" property, which has been detailed in the above methods. (vipQueueLinkedList) In the Enqueue method, we create a new node that holds the value to be added. We check to see if the linked list is empty, and if it is, we set the node added to be the first and last node, if it's not empty, we set the next value of the last node to be equal to the new node. Finally, we increment the count of nodes. In the EnqueueVip method, we proceed identically to above with the exception of setting the first node equal to the new node and setting the new node's next pointer to be the previous first node. In the Dequeue method, we store the data from the front of the linked list so that we can return it later, and then we change the first node to be the second node, and then finally decrement the count of the nodes and return the data. The isFull and isEmpty follow the same design pattern as in the vipQueueArray, so they need not be mentioned again here. I have neither given nor received unauthorized aid on this assignment.