/* ========================================== * JGraphT : a free Java graph-theory library * ========================================== * * Project Info: http://jgrapht.sourceforge.net/ * Project Creator: Barak Naveh (barak_naveh@users.sourceforge.net) * * (C) Copyright 2003-2008, by Barak Naveh and Contributors. * * This program and the accompanying materials are dual-licensed under * either * * (a) the terms of the GNU Lesser General Public License version 2.1 * as published by the Free Software Foundation, or (at your option) any * later version. * * or (per the licensee's choosing) * * (b) the terms of the Eclipse Public License v1.0 as published by * the Eclipse Foundation. */ /* -------------------------- * FibonnaciHeapNode.java * -------------------------- * (C) Copyright 1999-2008, by Nathan Fiedler and Contributors. * * Original Author: Nathan Fiedler * Contributor(s): John V. Sichi * * $Id$ * * Changes * ------- * 03-Sept-2003 : Adapted from Nathan Fiedler (JVS); * * Name Date Description * ---- ---- ----------- * nf 08/31/97 Initial version * nf 09/07/97 Removed FibHeapData interface * nf 01/20/01 Added synchronization * nf 01/21/01 Made Node an inner class * nf 01/05/02 Added clear(), renamed empty() to * isEmpty(), and renamed printHeap() * to toString() * nf 01/06/02 Removed all synchronization * JVS 06/24/06 Generics * */ package org.jgrapht.util; /** * Implements a node of the Fibonacci heap. It holds the information necessary * for maintaining the structure of the heap. It also holds the reference to the * key value (which is used to determine the heap structure). * * @author Nathan Fiedler */ public class FibonacciHeapNode<T> { /** * Node data. */ T data; /** * first child node */ FibonacciHeapNode<T> child; /** * left sibling node */ FibonacciHeapNode<T> left; /** * parent node */ FibonacciHeapNode<T> parent; /** * right sibling node */ FibonacciHeapNode<T> right; /** * true if this node has had a child removed since this node was added to * its parent */ boolean mark; /** * key value for this node */ double key; /** * number of children of this node (does not count grandchildren) */ int degree; /** * Default constructor. Initializes the right and left pointers, making this * a circular doubly-linked list. * * @param data data for this node */ public FibonacciHeapNode(T data) { right = this; left = this; this.data = data; } /** * Obtain the key for this node. * * @return the key */ public final double getKey() { return key; } /** * Obtain the data for this node. */ public final T getData() { return data; } /** * Return the string representation of this object. * * @return string representing this object */ public String toString() { return Double.toString(key); } // toString } // End FibonacciHeapNode.java