gpt4 book ai didi

ruby 未定义方法错误 p= 方法不退出

转载 作者:数据小太阳 更新时间:2023-10-29 08:09:33 24 4
gpt4 key购买 nike

以下是 ruby​​ 中的 Circular double LL 实现。我是 ruby​​ 的新手(不到几天)所以我为节点做了一个复杂的结构。删除行

temp.n.p=temp2 

使错误消失,否则会遇到以下错误:-

/home/ghost/Desktop/ruby/ds/test.rb:40:in `insert': undefined method `p=' for #<Cdll:0x000000022bfde8> (NoMethodError)
from /home/ghost/Desktop/ruby/ds/test.rb:60:in `<main>'

这是完整的代码:-

class Node
def initialize(a,b,c)
@data=a
@next=b
@prev=c
end
def d=(ele)
@data=ele
end
def n=(ele)
@next=ele
end
def p=(ele)
@prev=ele
end
def d
@data
end
def p
@prev
end
def n
@next
end


end

class Cdll
def initialize
@sentinel=Node.new(nil,self,self)
end

def insert(ele)
temp=@sentinel
while temp.d!=nil
temp=temp.n
end
temp2=Node.new(ele,temp,temp.n)
temp.n .p=temp2
temp.n=temp2
end


def search(ele)
temp=@sentinel.n
while temp.d!=nil
if(temp.d==ele)
return temp
else
temp=temp.n
end
end
return nil
end
end


c=Cdll.new
c.insert(12)
c.insert(14)
if((x=c.search(14))!=nil)
puts x.d
end

感谢任何帮助。

最佳答案

看Cdll插入方法。

 def insert(ele)
temp=@sentinel
# @sentinel.n == self
# => true
while temp.d!=nil
temp=temp.n
end
temp2=Node.new(ele,temp,temp.n)
# temp.n == self
# => true
temp.n.p=temp2
temp.n=temp2
end

当您创建 Cdll 类的新实例时 - 您还创建了 Node 的实例,其中上一个和下一个元素是 Cdll 的实例(不是 Node,方法 p= 存在)。

我认为它实际上不是双向链表。也许节点中的 prev 和 next 元素也应该是一个 Node 实例

关于ruby 未定义方法错误 p= 方法不退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15581578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com