LinkedList Implementation
$begingroup$
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
ruby linked-list
$endgroup$
add a comment |
$begingroup$
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
ruby linked-list
$endgroup$
$begingroup$
Isn'tget
going to return the node after the one with the match?
$endgroup$
– AShelly
3 hours ago
add a comment |
$begingroup$
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
ruby linked-list
$endgroup$
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
ruby linked-list
ruby linked-list
edited 3 hours ago
Alex
1,168416
1,168416
asked 8 hours ago
jacksonecacjacksonecac
1335
1335
$begingroup$
Isn'tget
going to return the node after the one with the match?
$endgroup$
– AShelly
3 hours ago
add a comment |
$begingroup$
Isn'tget
going to return the node after the one with the match?
$endgroup$
– AShelly
3 hours ago
$begingroup$
Isn't
get
going to return the node after the one with the match?$endgroup$
– AShelly
3 hours ago
$begingroup$
Isn't
get
going to return the node after the one with the match?$endgroup$
– AShelly
3 hours ago
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
});
});
}, "mathjax-editing");
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "196"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216441%2flinkedlist-implementation%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Code Review Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216441%2flinkedlist-implementation%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
$begingroup$
Isn't
get
going to return the node after the one with the match?$endgroup$
– AShelly
3 hours ago