Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA双链表-计数相等的数据项_Java_List_Count_Doubly Linked List - Fatal编程技术网

JAVA双链表-计数相等的数据项

JAVA双链表-计数相等的数据项,java,list,count,doubly-linked-list,Java,List,Count,Doubly Linked List,对于如何实现双链接列表,我仍然有点困惑。在研究并找到了一些关于它们的信息之后,我对一些基本函数的工作原理有了很好的了解,例如添加、删除等。然而,如果我想为一个名为countEquals(E check)的DLList编写一个方法,该方法遍历整个列表并计算列表中与“check”相等的项数传递给方法的数据项,我将如何编写它。指令说我不能使用for-each循环或迭代器,但必须使用某种类型的循环。完全遍历列表后,返回等于“check”的项数。以下是我尝试为此编写的一些代码: DLList的内部引用:字

对于如何实现双链接列表,我仍然有点困惑。在研究并找到了一些关于它们的信息之后,我对一些基本函数的工作原理有了很好的了解,例如添加、删除等。然而,如果我想为一个名为countEquals(E check)的DLList编写一个方法,该方法遍历整个列表并计算列表中与“check”相等的项数传递给方法的数据项,我将如何编写它。指令说我不能使用for-each循环或迭代器,但必须使用某种类型的循环。完全遍历列表后,返回等于“check”的项数。以下是我尝试为此编写的一些代码:

DLList的内部引用:字段(下一个、数据、上一个)成员(大小)、头和尾

 public int countEquals(E Check){
      currentNode = head; 
      int count = 0;
      while (currentNode != null) {
            if (currentNode.data == check) {
                count ++;
            else {
                currentNode.next = currentNode;
            }
      return count;
  }

如果我必须写更多的指针赋值,我不太确定这是否能正确地遍历双链接列表?我在想,因为我没有添加任何节点,只是遍历一个列表,所以我不需要做指针

差不多了,很努力。然而,只有几件事。首先,您可能希望研究使用
something.equals()
而不是
=
,因为后者用于对象标识而不是值相等

第二。遍历列表的逻辑稍有偏差。无论是否找到某个项目,都需要执行该任务,并且任务的两边应该颠倒

查看以下伪代码以获得指导:

def countEquals(check):
    currentNode = head
    count = 0
    while currentNode != null:
        if currentNode.data == check:
            count = count + 1
        currentNode = currentNode.next
    return count;

差不多了,很努力。然而,只有几件事。首先,您可能希望研究使用
something.equals()
而不是
=
,因为后者用于对象标识而不是值相等

第二。遍历列表的逻辑稍有偏差。无论是否找到某个项目,都需要执行该任务,并且任务的两边应该颠倒

查看以下伪代码以获得指导:

def countEquals(check):
    currentNode = head
    count = 0
    while currentNode != null:
        if currentNode.data == check:
            count = count + 1
        currentNode = currentNode.next
    return count;

差不多了,很努力。然而,只有几件事。首先,您可能希望研究使用
something.equals()
而不是
=
,因为后者用于对象标识而不是值相等

第二。遍历列表的逻辑稍有偏差。无论是否找到某个项目,都需要执行该任务,并且任务的两边应该颠倒

查看以下伪代码以获得指导:

def countEquals(check):
    currentNode = head
    count = 0
    while currentNode != null:
        if currentNode.data == check:
            count = count + 1
        currentNode = currentNode.next
    return count;

差不多了,很努力。然而,只有几件事。首先,您可能希望研究使用
something.equals()
而不是
=
,因为后者用于对象标识而不是值相等

第二。遍历列表的逻辑稍有偏差。无论是否找到某个项目,都需要执行该任务,并且任务的两边应该颠倒

查看以下伪代码以获得指导:

def countEquals(check):
    currentNode = head
    count = 0
    while currentNode != null:
        if currentNode.data == check:
            count = count + 1
        currentNode = currentNode.next
    return count;

如果数据是整数,请这样做

 while (currentNode != null) {
            if (currentNode.data == check) {
                count ++;
                currentNode.next = currentNode;

            }
            else {
                currentNode.next = currentNode;
            }
  }
  return count;

如果数据是整数,请这样做

 while (currentNode != null) {
            if (currentNode.data == check) {
                count ++;
                currentNode.next = currentNode;

            }
            else {
                currentNode.next = currentNode;
            }
  }
  return count;

如果数据是整数,请这样做

 while (currentNode != null) {
            if (currentNode.data == check) {
                count ++;
                currentNode.next = currentNode;

            }
            else {
                currentNode.next = currentNode;
            }
  }
  return count;

如果数据是整数,请这样做

 while (currentNode != null) {
            if (currentNode.data == check) {
                count ++;
                currentNode.next = currentNode;

            }
            else {
                currentNode.next = currentNode;
            }
  }
  return count;


您的代码看起来几乎正确。不管怎样,您都需要
currentNode.next=currentNode执行,因此将其移出else。您可能希望执行
.equals()
而不是
=
进行比较。1。缺少一个结束括号。2.范代尔说了什么。哦,好吧,我明白你们的意思。因为在我编写的代码中,如果它运行到一个空节点,它将自动返回计数,而不是继续遍历列表。谢谢大家的帮助。在这种情况下,如何实现.equals()方法?您的代码看起来几乎正确。不管怎样,您都需要
currentNode.next=currentNode执行,因此将其移出else。您可能希望执行
.equals()
而不是
=
进行比较。1。缺少一个结束括号。2.范代尔说了什么。哦,好吧,我明白你们的意思。因为在我编写的代码中,如果它运行到一个空节点,它将自动返回计数,而不是继续遍历列表。谢谢大家的帮助。在这种情况下,如何实现.equals()方法?您的代码看起来几乎正确。不管怎样,您都需要
currentNode.next=currentNode执行,因此将其移出else。您可能希望执行
.equals()
而不是
=
进行比较。1。缺少一个结束括号。2.范代尔说了什么。哦,好吧,我明白你们的意思。因为在我编写的代码中,如果它运行到一个空节点,它将自动返回计数,而不是继续遍历列表。谢谢大家的帮助。在这种情况下,如何实现.equals()方法?您的代码看起来几乎正确。不管怎样,您都需要
currentNode.next=currentNode执行,因此将其移出else。您可能希望执行
.equals()
而不是
=
进行比较。1。缺少一个结束括号。2.范代尔说了什么。哦,好吧,我明白你们的意思。因为在我编写的代码中,如果它运行到一个空节点,它将自动返回计数,而不是继续遍历列表。谢谢大家的帮助。在这种情况下,我将如何实现.equals()方法?我对代码的赋值部分有一个问题。两个赋值语句之间的区别是什么?currentNode.next=currentNode。这基本上会指向它自己吗?@业余爱好者哈斯克尔,是的,没错。实际上,它将当前节点的下一个指针设置为指向自身,从而有效地在该点截断列表。正确的方法是,将本地指针设置为指向下一个节点。我对代码的赋值部分有一个问题。区别是什么