1 /* 2 * Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 package gc.gctests.ReferencesGC; 25 26 class node { 27 byte [] arr; 28 node next; 29 node prev; 30 node(){ arr = new byte[100]; } 31 } 32 33 public class CircularLinkedList implements Cloneable { 34 private node Root; 35 36 public void addElement() { 37 node newnode; 38 39 newnode = new node(); 40 if (Root == null){ 41 Root = newnode; 42 Root.next = Root; 43 Root.prev = Root; 44 } else{ 45 newnode.next = Root.next; 46 Root.next.prev = newnode; 47 Root.next = newnode; 48 newnode.prev = Root; 49 } 50 } 51 52 public void addNelements(int n) { 53 for (int i = 0; i < n ; i++) 54 addElement(); 55 } 56 57 public int elementCount() { 58 node p; 59 int count; 60 61 p = Root; 62 count = 0; 63 64 do { 65 p = p.prev; 66 count++; 67 }while(p != Root); 68 return count; 69 } 70 71 public Object clone() { 72 node p; 73 p = Root; 74 75 if ( p == null ) return null; 76 CircularLinkedList clone = new CircularLinkedList(); 77 do { 78 clone.addElement(); 79 p = p.prev; 80 } while(p != Root); 81 return clone; 82 } 83 }