首页 > 解决方案 > LinkedList sum 函数完成后会删除整个列表吗?

问题描述

这是出于实践目的而不是现实世界的问题。

int在一个链表中对所有数据类型的节点求和,这很好。

我还在int链接列表中对所有具有偶数数据类型的节点求和,这很好用。

但是当我在测试类中一个接一个地调用时,整个列表都是空的(设置为空)。

我认为这与这条线有关head = head.next;

data()返回存储在该节点上的数据

测试类

  linkedList.addTail(4);
  linkedList.addTail(7);
  linkedList.addTail(2);
  linkedList.addTail(7);

  linkedList.sum();

  //The list is empty here 
  linkedList.sumEven();

链表

public int sum(){
        int sum = 0;

        while (head != null) {  
            sum += head.data;  

            //Here 
            head = head.next;  
        }

        System.out.println(sum);
        return sum;
    }


public int sumEven(){
        //To keep track of the sum 
        int sum = 0;  

        while (head != null)  
        {  

            //If the data at head is even add 
            if (head.data() % 2 == 0)  
                sum += head.data;  

            //Or Here
            head = head.next;  
        }

        System.out.println(sum);
        return sum;  
    } 

标签: javalinked-list

解决方案


head每次分配它时,您都会覆盖它。您可以在求和之前复制它,也可以使用类似于以下的 for 求和。

for(Integer i: head) sum += i;

我假设您的 LinkedList 中的元素是 int 类型的。


推荐阅读