首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LinkedList findElement

LinkedList findElement
EN

Stack Overflow用户
提问于 2017-08-12 23:49:15
回答 2查看 100关注 0票数 0

我尝试使用下面的代码来查找LinkedList中的最后一个第k个元素。为什么它总是返回null

代码语言:javascript
复制
public Node findElem(Node head, int k){
    if(k < 1|| k > this.length()){
        System.out.println("error");
    }
    Node p1=head;
    Node p2 = head;
    for(int i=0;i<k-1;i++) {
        p1 = p1.next;
    }
    while(p1 != null){
            p1= p1.next;
            p2 = p2.next;
    }
    return p2;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-13 00:05:01

你想用这些代码做什么?我猜你在试图找到LinkedList中的t个节点,也就是第k个节点?但是在任何方面,你的代码都是完全无用的。应该是这样的:

代码语言:javascript
复制
public Node findElem(Node head, int k) {
    if(k < 1 || k > this.length()) {
        System.out.println("Error");
        return null;
    }
    Node position = head;
    while(k > 0) {
        position = position.next;
        k--;
    }
    return position;
}

希望这就是你要找的。如果没有,请再问我一次。

票数 0
EN

Stack Overflow用户

发布于 2017-08-12 23:56:55

您只需要一个变量:对列表中第k个元素的引用,在您的代码中是p1。找到该元素,如下所示:

代码语言:javascript
复制
for(int i=0; i<k-1;i++) {
    p1 = p1.next;
}

然后把它还回去。另外,看一下您之前的if(k<1|| k>this.length()),您会发现排除了一个非零数,因此您应该将for循环中的i初始化为1,因为head将是链表中的第1个节点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45652154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档