我如何在链表中找到链表的长度?

How would I find the length of a linkedlist IN a linkedlist?

我正在尝试遍历其中包含链表(子列表)元素的链表(我们可以称之为超级列表)。

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

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;
        }

你可以做的是创建一个方法,为有问题的组大小传递一个参数,并找出是否有任何大小组大小的子列表。

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 所指出的,从技术上讲,您的超级列表不是LinkedList'sLinkedList。它是 ObjectsLinkedList。这就是为什么您必须显式转换为 LinkedList 才能访问 "Sub LinkedList's"。

如果您想要 LinkedList's 的真实 LinkedList,那么您应该像这样创建 superList:

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

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

递归简单解法

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