class Chain2{
//instances
   
      public ChainNode2 firstNode = null;
      public int size = 0;
   
   //constructor
   
      public Chain2(){
      
      }
   
   //METHODS
  
 		//method to create Singly - linked list from data  
      public void makeList(int [] a, int n){
			
         ChainNode2 p = new ChainNode2(a[0], null, null);
         firstNode = p;
         size++;
      
         for (int i=1; i<n ; i++){
            p.next = new ChainNode2(a[i], null, p);
            size++;
            p = p.next;
         }
      }
   
      public void printList(){
         ChainNode2 currentNode = firstNode;
         for (int i=0; i<size; i++){
            if ((i % 10 == 0) && (i != 0))
               System.out.println("");
            System.out.print(currentNode.element);
				if (currentNode.element < 10) 
					System.out.print(" ");
				if (currentNode.element < 100)
					System.out.print(" ");
            System.out.print(" ");
         
            currentNode= currentNode.next;
         }
         System.out.println("");
      }
   
      public void ReverseList(){
			int i;
			int j;
			int temp;
			ChainNode2 currentNode2 = firstNode;
			ChainNode2 currentNode1 = firstNode;
			//traverses list and swaps first & last, second & last-1, etc...
			for (j = 1; j <= size/2; j++){
				temp = currentNode1.element;
				currentNode2 = currentNode1;
				for (i = j; i <= size - j; i++){
					currentNode2 = currentNode2.next;
				}
				currentNode1.element = currentNode2.element;
				currentNode2.element = temp;
				currentNode1 = currentNode1.next; 
			}
      
      }
   
      public void scrambleList(){
      	int i,j,k,r;
			int swapSets = size / 6;
			int temp;
			ChainNode2 currentNode2 = firstNode;
			ChainNode2 currentNode1 = firstNode;
			//for each set of six, traverses list and swaps 1st & 4th, 2nd & 5th, 3rd & 6th
			for (k = 1; k <= swapSets; k ++){
				for (r = 1; r <=(k-1)*6; r++){
					currentNode1 = currentNode1.next;
				}
					
				for (j = 1; j <= 3; j++){
					temp = currentNode1.element;
					currentNode2 = currentNode1;
					for (i = 1; i <= 3; i++){
						currentNode2 = currentNode2.next;
					}
					currentNode1.element = currentNode2.element;
					currentNode2.element = temp;
					currentNode1 = currentNode1.next;
				}
				currentNode1 = firstNode;
			}
      }
   
 

}
