gpt4 book ai didi

java - 如何在java中查找通用单链表的大小

转载 作者:行者123 更新时间:2023-11-29 05:31:02 31 4
gpt4 key购买 nike

我无法找出 Java 中通用单链表的大小。这是我的代码(下面我会解释我是如何找到它的,遇到了什么困难):

class List<T> {
/**
* An immutable singly-linked list.
* @param <T> the type of the list elements
*/
T head;
List<T> tail;

List(T head, List<T> tail) {
this.head = head;
this.tail = tail;
}

/** Generic helper function for list creation. You DO NOT NEED to call this function. */
static <U> List<U> node(U head, List<U> tail) {
return new List<U>(head, tail);
}


/* Getters and Setters for the head and the tail; */
public List<T> getTail() {
return tail;
}

public void setTail(List<T> tail) {
this.tail = tail;
}

public T getHead() {
return head;
}

public void setHead(T head) {
this.head = head;
}

我试图找出这样的尺寸:遍历链表的元素,从第一个元素开始,直到“下一个”指针显示null。 .增加辅助变量 size .代码:

    public int size(){
int size = 0;

T temp = head;
while (temp.getTail() != null) {
temp = temp.getTail();
size++;
}

return size;
}

问题是temp.getTail() . Eclipse 要求在这种特定情况下转换变量 tempList<T> .但这对我来说毫无意义,因此 List<T>应该就像指向列表下一个元素的“下一个”指针。

有没有人能解释一下我做错了什么以及我该如何解决这个问题。我真的很想了解泛型(我也阅读了很多关于泛型的内容,但似乎仍然无法弄清楚如何处理这种情况)。

我将在我的测试课中使用这个列表:

        List<Integer> coins = List.node(1, List.node(2, List.node(5,  List.node(10,
List.node(20, List.node(50, List.node(100, List.node(200, null))))))));

我将递归计算给定欧元金额的可能硬币组合的数量(值 1、2、5、10、20、50、100 和 200)。

最佳答案

应该是:

int size = 1;

List<T> temp = this;

while (temp.getTail() != null) {
temp = temp.getTail();
size++;
}

T没有尾部,List<T>但是,这就是您的温度应该是多少。

假设它是一个List<Integer>那么您的代码将如下所示:

Integer temp = head;
while (temp.getTail() != null) {
temp = temp.getTail();
size++;
}

temp是一个 Integer尾部将是 List<Integer> , 所以你不能给 Integer 分配一串整数.

关于java - 如何在java中查找通用单链表的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21066845/

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