【问题标题】:How would I find the length of a linkedlist IN a linkedlist?如何在链表中找到链表的长度?
【发布时间】:2016-05-27 02:19:08
【问题描述】:

我正在尝试通过一个链接列表(我们可以称之为超级列表),其中包含链接列表(子列表)的元素。

将元素添加到两个链表的方法是:

LinkedList<Object> list = new LinkedList<>();

public void add(Object... item) {
    LinkedList<Object> thingie = new LinkedList<>();
    for (Object i: item) {
        thingie.add(i);
    }
    list.addAll(thingie);
}

现在我必须编写方法通过遍历超级列表来检查子列表中是否有 1、2、3、4 个元素的组 到目前为止我所拥有的(这是非常错误的)是:

LinkedList <Object> ohno = new LinkedList<>();
        for (int i = 0; i<list.size(); i++){
            ohno = (LinkedList<Object>) list.get(i);
            if (int j = 1; j = ohno.size();){
                return true;
            }
            else return false;
        }

【问题讨论】:

  • 您的超级列表list 只是一个对象列表,而不是LinkedList 的列表。
  • 我想你想要if (i == ohno.size() - 1){
  • 你说的是什么意思"检查是否有1、2、3、4个元素的组"?您将如何使用这些信息?
  • 所以如果我调用方法 hasSingle();它将搜索并找到一个包含 1 个名称对象的链表,并返回 true。
  • @Abhishek 超级名单怎么不是LinkedList

标签: java recursion linked-list traversal removeclass


【解决方案1】:

您可以做的是创建一个方法,该方法为所讨论的组大小传递一个参数,并找出是否有任何大小组大小的子列表。

private static boolean hasSubListsOfSize (LinkedList<Object> superList, final int groupSize)
{
     for (int i = 0, size = superList.size(); i < size; i++)
     {
         LinkedList<Object> subList = (LinkedList<Object>) superList.get(i);
         if (subList.size() == groupSize)
         {
            return true;
         }
     }

     // didn't find any sub lists of the group size
     return false;
}

旁注:正如@Abhishek 所指出的,您的超级列表在技术上不是LinkedListLinkedList's。它是ObjectsLinkedList。这就是为什么您必须对 LinkedList 进行显式强制转换才能访问“Sub LinkedList”的原因。

如果你想要一个真正的 LinkedListLinkedList's,那么你应该像这样创建 superList:

LinkedList<LinkedList<Object>> superList = new LinkedList<LinkedList<Object>>();

如果您以这种方式创建它,那么您将避免在编译时进行显式转换。

【讨论】:

    【解决方案2】:

    递归简单解

    def getCount(head):
        if (not node): # Base case
            return 0
        else:
            return 1 + getCount(head.next)
        
    

    【讨论】:

      猜你喜欢
      • 2015-09-28
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-09
      • 1970-01-01
      相关资源
      最近更新 更多