【问题标题】:Circular Linked List in CocoaCocoa 中的循环链表
【发布时间】:2010-01-17 01:19:59
【问题描述】:

在 Cocoa 中有没有类似于循环链表的东西?

我知道一个 NSArray 是有序的——但我认为我不能使用“nextItem”或“previousItem”——对吗?此外,我需要将最后一项的 nextItem 作为第一项。

我可以添加自己的 nextItem 和 previousItem 方法,但如果 Apple 还没有实现合适的东西,我会感到惊讶。如果有的话我也找不到。

【问题讨论】:

    标签: arrays cocoa data-structures circular-list


    【解决方案1】:

    虽然您当然可以使用类别将行为添加到NSArray(正如@darren 建议的那样),但您可能实际上需要一个真正的循环缓冲区。如果是这种情况,请查看CHDataStructures 框架。除了CHCircularBufferStack,还有CHCircularBufferQueueCHCircularBufferDeque

    【讨论】:

    • 是否可以将 NSArray 绑定到 CHData 结构?如果是这样,那绝对值得研究一下。
    • 我没有为这种行为明确编码,所以如果你不能,它还不支持。但是,我一直在计划将抽象循环缓冲区父类转换为 NSMutableArray 的子类,它可能会免费提供其中的一些功能。 (免费给你,不是我作为作者......)
    • 另外,请注意,我的循环缓冲区并不完全是一个从头到尾(反之亦然)的结构。它基本上是一个包装的 C 数组,其中真正的索引是从用户那里抽象出来的。目的是使在任一端插入和删除都便宜,因为这是您使用堆栈/队列/双端队列最常做的事情。也许修改我的双向链表可以提供您正在寻找的确切行为?
    【解决方案2】:

    我不知道有任何这样的循环列表数据结构。您关于手动实施它的想法似乎是个好主意。我会使用一个类别:

    @implementation NSArray (myCircularList)
    
    -(id)nextItem;
    -(id)previousItem;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多