// Source code example for "A Practical Introduction // to Data Structures and Algorithm Analysis" // by Clifford A. Shaffer, Prentice Hall, 1998. // Copyright 1998 by Clifford A. Shaffer class Link { // Singly linked list node with freelist private Object element; // Object for this Link private Link next; // Pointer to next Link in list Link(Object it, Link nextval) // Constructor 1 { element = it; next = nextval; } // Given Object Link(Link nextval) { next = nextval; } // Constructor 2 Link next() { return next; } Link setNext(Link nextval) { return next = nextval; } Object element() { return element; } Object setElement(Object it) { return element = it; } // Extensions to support freelists static Link freelist = null; // Freelist for the class static Link get(Object it, Link nextval) { // Get new link if (freelist == null) return new Link(it, nextval); // Get from free store Link temp = freelist; // Get from freelist freelist = freelist.next(); temp.setElement(it); temp.setNext(nextval); return temp; } void release() { // Return Link to freelist element = null; // Drop reference to the element next = freelist; freelist = this; } } // class Link