【问题标题】:How to access particular variable of object stored in node of singly linked list (iteration)如何访问存储在单链表节点中的对象的特定变量(迭代)
【发布时间】:2017-11-15 02:32:40
【问题描述】:

这是一个非常具体的问题,我似乎找不到任何特别有用的东西。我有一个单链表(不是实现的链表,这是我能找到的全部),其中节点存储一个 Student 对象。每个 Student 对象都有变量,尽管我无法访问每个变量。

我认为它应该类似于您遍历对象数组的方式。但它使用 for 循环。要遍历链表,您必须使用节点及其 next&data 值。

我不完全确定如何将这两个想法结合起来。我觉得这要么是我没有得到的愚蠢简单的东西,要么是我应该采用完全不同的方法。

import java.util.scanner;

public class StudentNode extends Student
{
private Student data;
private StudentNode next;


class SinglyLinkedList
{

 private StudentNode first;

 //constructor
 public SinglyLinkedList()
 {
     first=null;
 }


 public addToList(Student newData)
 {
     StudentNode newNode= new StudentNode();
     newNode.data=newData;
     newNode.next=first; //refs to the element first is currently pointing to
     first=newNode;//first now refs to added element
 }           

 public courseMark(Student data)
 {
     double cm=courseMark(StudentNode.data);
     return "Student number : "+stuNum +"Course Mark: "+cm;

 }



public double classAverage(Student data)
{
//traverses linked list, not enirely sure about how to access the course mark
    double classAvg=0;
    double sum = 0;
    int i=0;
    StudentNode current = first;
    StudentNode previous = null;
    while (current != null) 
    {
        i++;  
        StudentNode current= Student.courseMark();
        sum += current.data;//not sure bout course mark access
        previous = current;
        current = current.next;
     }
   return classAvg=sum/i;
  }

这是数据组件使用的 Student 类。不确定是否需要回答。

public class Student
{
private String name;
private String stuNum;
private int firstTest;
private int secondTest;
private int thirdTest;

public Student(String n,String sN,int fT,int sT,int tT)
{
    name=n;
    stuName=sN;
    firstTest=fT;
    secondTest=sT;
    thirsTest=tT;
}

//setters
public void setName(String n)
{
    name=n;
}    

public void setStuNum(String sN)
{
    stuNum=sN;
}

public void setFirstTest(int fT)
{
    firstTest=fT;
}

public void setSecondTest(int sT)
{
    secondTest=sT;
}

public void setThirdTest(int tT)
{
    thirdTest=tT;
}

//getters

public String getName()
{
    return name;
}

public String getStuNum()
{
    return stuNum;
}

public int getFirstTest()
{
    return firstTest;
}

public int getSecondTest()
{
    return secondTest;
}

public int getThirdTest()
{
    return thirdTest;
}

//course mark computer

public double courseMark()
{
    double crseMark=(firstTest*0.25)+(secondTest*0.25)+(thirdTest*0.50);
    return crseMark;
}

}

【问题讨论】:

  • 您正在重新发明java.util.LinkedList<E> 类。您是否需要编写自己的链接列表?如果没有,请使用库类。如果编写链接列表实现是课程工作的一部分,那么您需要学习教科书和讲义,因为这将被涵盖。你学过IterableIterator吗?这些是处理列表的重要概念。

标签: java singly-linked-list


【解决方案1】:

必须从节点遍历到学生数据才能得到courseMark。

while (current != null) { ... double courseMark = current.data.courseMark(); ... }

【讨论】:

  • 非常感谢。我正在考虑做 current.data.courseMark。但它看起来很奇怪,我不确定是否会被允许。
猜你喜欢
  • 1970-01-01
  • 2013-04-14
  • 1970-01-01
  • 1970-01-01
  • 2013-05-13
  • 2014-08-10
  • 2022-10-02
  • 2012-03-26
  • 1970-01-01
相关资源
最近更新 更多