Ruby - 如何从像Array这样的链表中删除节点

时间:2012-12-02 19:52:55

标签: ruby arrays linked-list

我在Ruby中使用一个类似于链表的数组。 我有ary = [1,2,3] 要插入节点,我会ary.insert(2,99)生成[1,2,99,3]

现在的问题是: 我该怎么做? 我希望存在一个函数ary.extract(2),它将返回99并将我的数组保留在状态[1,2,3]

2 个答案:

答案 0 :(得分:1)

你的意思是delete_at

1.9.3p125 :017 > ary = [1,2,3] 
 => [1, 2, 3] 
1.9.3p125 :018 > ary.insert(2,99)
 => [1, 2, 99, 3] 
1.9.3p125 :019 > ary.delete_at(2)
 => 99 
1.9.3p125 :020 > ary
 => [1, 2, 3] 
1.9.3p125 :021 > 

或者,如果你想按值而不是索引,那就是delete

1.9.3p125 :021 > ary = [1,2,3] 
 => [1, 2, 3] 
1.9.3p125 :022 > ary.insert(2,99)
 => [1, 2, 99, 3] 
1.9.3p125 :023 > ary.delete(99)
 => 99 
1.9.3p125 :024 > ary
 => [1, 2, 3] 

第二个版本的小问题:如果有重复项,它将删除所有出现的值。

答案 1 :(得分:0)

slice可以解决问题:

a = [1,2,99,3]
v = a.slice! 2

p v
# => 99

p a
# => [1, 2, 3]