All pastes #936303 Raw Edit

Untitled

public text v1 · immutable
·published 2008-03-10 09:25 UTC
rendered paste body
// Link List Class
// Uses linkNode Class
// Authored by Ian Livingstone
// March 10th 2008
// B00487841
// CSCI 1101

public class LinkList {

        // Class Variables
        private int nodeCount;
        private linkNode tailNode;
        
        // Constructor
        LinkList () {
                this.nodeCount = 0;
        }
        
        // Add Node Method -- Adds a Node to the Link List, Returns Void
        public void addNode (Object data) {
        
                // Create Temp Node
                linkNode _temp = new linkNode(this.tailNode.getPointer(), data);
                
                // If Count > 0 -- Set tailNode = _temp Node
                if (this.nodeCount > 0) {
                        this.tailNode.setPointer(_temp);   
                } else {
                        _temp.setPointer(_temp);
                }
                
                // Set tailNode
                this.tailNode = _temp;
                
                // Increase number of Node's
                this.nodeCount++;
        }
        
        // Del Node Method -- Deletes a node form the Link List, returns the node that was deleted.
        public linkNode delNode (Object value) {
                
                // Use getNode method to search Node
                linkNode _temp = getNode(value);
                
                // If Number of Nodes is Greater than 1
                if (this.nodeCount > 2) {
                        linkNode _tempTwo = getPointerNode(_temp);
                
                        // Now set Pointer Node to the node being deleted pointer
                        _tempTwo.setPointer(_temp.getPointer());
                } else { //  Else: This is the last node!
                
                        linkNode _tempTwo = getPointerNode(_temp);
                        
                        this.tailNode = _tempTwo;
                }
                
                // Decrease Number of Node's
                this.nodeCount--;

                
                // Return the Node
                return _temp;
        }
        
        // getNode Method -- Searches the Link List for the value, and then returns the Node
        public linkNode getNode (Object value) {
                
                // set Temp Node
                linkNode _temp = this.tailNode;
                
                // Start traversing the Link List
                _temp = _temp.getPointer();
                
                // While the Pointer dosn't equal the tail node -- OR we have found the value.
                while (_temp.getPointer() != this.tailNode && _temp.getValue() != value) {
                        _temp = _temp.getPointer();
                }
                
                // If _temp's value dosn't equal the value we are looking for return null.
                if (_temp.getValue() != value) {
                        return null;
                } else {
                        return _temp;
                }
        }
        
        // traverseList -- Traverses the Link List N results, and then returns that node -- Starts at tail
        public linkNode traverseList (int n) {
        
                // make we havea tleast one node in the list
                if (this.nodeCount < 1) {
                        return null;
                }
                    
                // Start at Tail
                linkNode _temp = this.tailNode;
                
                // Now we are at the begginning:
                _temp = _temp.getPointer();
                
                for (int i = 1; i <= n; i++) {
                        _temp = _temp.getPointer();
                }
                
                // Return _temp!
                return _temp;
        }
        
        // traverseList -- Traverses the Link List N results, starting from the linkNode provided, and then returns the node that it finds.
        public linkNode traverseList (linkNode _temp, int n) {
                
                // make sure we have atleast one node in the list
                if (this.nodeCount < 1) {
                        return null;
                }
                
                // Start at provided linkNode
                for (int i = 1; i <= n; i++) {
                        _temp = _temp.getPointer();
                }
                
                // Return Temp!
                return _temp;
        }
        
        // getPointerNode Method -- Returns the Node that points to a Node
        public linkNode getPointerNode (linkNode value) {
                
                // set Temp Node
                linkNode _temp = this.tailNode;
                
                // Start the Ride!
                _temp = _temp.getPointer();
                
                while (_temp.getPointer() != this.tailNode && _temp.getValue() != value) {
                        _temp = _temp.getPointer();
                }
                
                // If _tmep's value dosn't equal the value we are looking for return null
                if (_temp.getPointer() != value) {
                        return null;
                } else {
                        return _temp;
                }
        }
        
        // isEmpty Method -- Returns if Node is Empty
        public boolean isEmpty () {
                if (this.nodeCount == 0) {
                        return true;
                } else {
                        return false;
                }
        }
        
        // size Method -- Returns size of Link List
        public int size () {
                return this.nodeCount;
        }
        
        // linkNode Class
        // Private Class
        private class linkNode {

                // Class Variables
                // Reference Pointer
                linkNode pointer;
                // Value Pointer
                Object value;
        
                // Class Constructor -- Sets Pointer, and value
                linkNode (linkNode pointer, Object value) {
                        setPointer(pointer);
                        setValue(value);       
                }
        
                // getPointer Method -- Returns the next Node in the List
                public linkNode getPointer () {
                        return this.pointer;
                }
        
                // toString Method -- Returns value of the next Node in the list
                public Object getValue () {
                        return this.value;
                }
        
                // setValue Method -- Sets the value of the node
                public void setValue (Object data) {
                        this.value = data;
                }
        
                // setPointer -- sets the value of the pointer
                public void setPointer (linkNode Object) {
                        this.value = Object;
                }
        }
}