#
Print Statistics

/*************************************************************************** * Author: Isai Damier * Title: Singly Linked List * Project: geekviewpoint * Package: datastructure * * Description: A LinkedList is a data structure that allows access * to a collection of data using pointers/references. While an * array can also be defined as above, LinkedLists and arrays differ * in how they are stored in memory and in the operations they * allow. Unlike an array that must be stored in a block of memory, * the nodes of a LinkedList can be stored anywhere because each * node has a reference to the node that succeeds it. Because the * nodes are stored so loosely, inserting nodes into a LinkedList * is easy; whereas in an array, all the succeeding elements must * be shifted. Of course, insertion also means changing the size of * the array, which means creating the entire array anew. * * Perhaps the greatest beauty of LinkedList is that it allows * accessing an entire sequence of nodes using only one variable: * a reference to the first node in the sequence. * * Countless operations can be performed on LinkedLists. Following * are a few, ranging from the common to the very interesting. **************************************************************************/ public class SinglyLinkedList { Node head = null; Node tail = null; /***************************************************************** * Time Complexity of Solution: * O(n). * * Description: Retrieve the following statistics about this * LinkedList: min, max, sum, size, and avg. * * Technical Details: * *****************************************************************/ public int[] printStats() {//min, max, avg, sum, size if (null == head) { return null; } int min, max, avg, sum, size; min = max = avg = sum = size = 0; for (Node t = head; null != t; t = t.next) { if (t == head) { min = max = head.data; } else { if (min > t.data) { min = t.data; } if (max < t.data) { max = t.data; } } sum += t.data; size++; }//for return new int[]{min, max, sum, size, sum / size}; } }

public class SinglyLinkedListTest { /** * Test of printStats method, of class SinglyLinkedList. */ @Test public void testPrintStats() { System.out.println("printStats"); int[] input = {9, 4, 5, 2, 1, 12, 6, 7, 4, 8, 3, 0, 16, 19, 11}; SinglyLinkedList linkedList = new SinglyLinkedList(); for (int i = 0; i < input.length; i++) { linkedList.addToTail(input[i]); } int[] result = linkedList.printStats(); int[] expected = {0, 19, 107, 15, 7}; assertTrue(Arrays.equals(expected, result)); } }