Skip to main content

module LinkedList

module LinkedList

    class List
        attr_accessor :node

        def initialize
            self.node = nil
        end

        def add(node)
            if self.node.nil?
                self.node = node
            else
                current_node = self.node
                while ! current_node.getPointer.nil? do
                    current_node = current_node.getPointer
                end
                current_node.setPointer node
            end
        end

        def get(node)
            current_node = self.node
            data_match = nil
            while !current_node.getPointer.nil? and ! data_match.nil? do
                data_match = current_node.getData if node.getData == current_node.getData
                current_node = current_node.getPointer
            end
            return current_node
        end

        def remove(node)
            previous_node = nil
            current_node = self.node
            next_node = current_node.getPointer
            while ! current_node.nil? do
                if current_node.getData == node.getData and current_node.getData == self.node.getData
                    self.node = next_node
                    return true
                end
                if current_node.getData == node.getData
                    previous_node.setPointer next_node
                    return true
                end
                previous_node = current_node
                current_node = next_node
                next_node = current_node.getPointer

            end
            return false
        end

        def print
            current_node = self.node
            while ! current_node.nil? do
                pointerData = current_node.getPointer.nil? ? nil : current_node.getPointer.getData
                puts "data=#{current_node.getData}, pointer=#{pointerData}"
                current_node = current_node.getPointer
            end         
            puts
        end

    end

    class Node
        attr_accessor :data
        attr_accessor :pointer

        def initialize(data = nil, pointer = nil)
            self.data = data
            self.pointer = pointer
        end

        def getData
            return self.data
        end

        def getPointer
            return self.pointer
        end

        def setData(data)
            self.data = date
        end

        def setPointer(node)
            self.pointer = node
        end

    end

end

end

module LinkedList

class List
    attr_accessor :node

    def initialize
        self.node = nil
    end

    def add(node)
        if self.node.nil?
            self.node = node
        else
            current_node = self.node
            while ! current_node.getPointer.nil? do
                current_node = current_node.getPointer
            end
            current_node.setPointer node
        end
    end

    def get(node)
        current_node = self.node
        data_match = nil
        while !current_node.getPointer.nil? and ! data_match.nil? do
            data_match = current_node.getData if node.getData == current_node.getData
            current_node = current_node.getPointer
        end
        return current_node
    end

    def remove(node)
        previous_node = nil
        current_node = self.node
        next_node = current_node.getPointer
        while ! current_node.nil? do
            if current_node.getData == node.getData and current_node.getData == self.node.getData
                self.node = next_node
                return true
            end
            if current_node.getData == node.getData
                previous_node.setPointer next_node
                return true
            end
            previous_node = current_node
            current_node = next_node
            next_node = current_node.getPointer

        end
        return false
    end

    def print
        current_node = self.node
        while ! current_node.nil? do
            pointerData = current_node.getPointer.nil? ? nil : current_node.getPointer.getData
            puts "data=#{current_node.getData}, pointer=#{pointerData}"
            current_node = current_node.getPointer
        end         
        puts
    end

end

class Node
    attr_accessor :data
    attr_accessor :pointer

    def initialize(data = nil, pointer = nil)
        self.data = data
        self.pointer = pointer
    end

    def getData
        return self.data
    end

    def getPointer
        return self.pointer
    end

    def setData(data)
        self.data = date
    end

    def setPointer(node)
        self.pointer = node
    end

end

end

module LinkedList

    class List
        attr_accessor :node

        def initialize
            self.node = nil
        end

        def add(node)
            if self.node.nil?
                self.node = node
            else
                current_node = self.node
                while ! current_node.getPointer.nil? do
                    current_node = current_node.getPointer
                end
                current_node.setPointer node
            end
        end

        def get(node)
            current_node = self.node
            data_match = nil
            while !current_node.getPointer.nil? and ! data_match.nil? do
                data_match = current_node.getData if node.getData == current_node.getData
                current_node = current_node.getPointer
            end
            return current_node
        end

        def remove(node)
            previous_node = nil
            current_node = self.node
            next_node = current_node.getPointer
            while ! current_node.nil? do
                if current_node.getData == node.getData and current_node.getData == self.node.getData
                    self.node = next_node
                    return true
                end
                if current_node.getData == node.getData
                    previous_node.setPointer next_node
                    return true
                end
                previous_node = current_node
                current_node = next_node
                next_node = current_node.getPointer

            end
            return false
        end

        def print
            current_node = self.node
            while ! current_node.nil? do
                pointerData = current_node.getPointer.nil? ? nil : current_node.getPointer.getData
                puts "data=#{current_node.getData}, pointer=#{pointerData}"
                current_node = current_node.getPointer
            end         
            puts
        end

    end

    class Node
        attr_accessor :data
        attr_accessor :pointer

        def initialize(data = nil, pointer = nil)
            self.data = data
            self.pointer = pointer
        end

        def getData
            return self.data
        end

        def getPointer
            return self.pointer
        end

        def setData(data)
            self.data = date
        end

        def setPointer(node)
            self.pointer = node
        end

    end

end
Source Link

LinkedList Implementation

I have created a LinkedList in Ruby and was wondering if anyone had any input on efficiencies that I could add or deficiencies I could remove.

module LinkedList

class List
    attr_accessor :node

    def initialize
        self.node = nil
    end

    def add(node)
        if self.node.nil?
            self.node = node
        else
            current_node = self.node
            while ! current_node.getPointer.nil? do
                current_node = current_node.getPointer
            end
            current_node.setPointer node
        end
    end

    def get(node)
        current_node = self.node
        data_match = nil
        while !current_node.getPointer.nil? and ! data_match.nil? do
            data_match = current_node.getData if node.getData == current_node.getData
            current_node = current_node.getPointer
        end
        return current_node
    end

    def remove(node)
        previous_node = nil
        current_node = self.node
        next_node = current_node.getPointer
        while ! current_node.nil? do
            if current_node.getData == node.getData and current_node.getData == self.node.getData
                self.node = next_node
                return true
            end
            if current_node.getData == node.getData
                previous_node.setPointer next_node
                return true
            end
            previous_node = current_node
            current_node = next_node
            next_node = current_node.getPointer

        end
        return false
    end

    def print
        current_node = self.node
        while ! current_node.nil? do
            pointerData = current_node.getPointer.nil? ? nil : current_node.getPointer.getData
            puts "data=#{current_node.getData}, pointer=#{pointerData}"
            current_node = current_node.getPointer
        end         
        puts
    end

end

class Node
    attr_accessor :data
    attr_accessor :pointer

    def initialize(data = nil, pointer = nil)
        self.data = data
        self.pointer = pointer
    end

    def getData
        return self.data
    end

    def getPointer
        return self.pointer
    end

    def setData(data)
        self.data = date
    end

    def setPointer(node)
        self.pointer = node
    end

end

end