链表中的实例变量

时间:2016-11-19 23:30:40

标签: java collections linked-list nodes instance-variables

我写了一个关于病人的程序。我有自己的链表收集类。 我本可以使用Java的链接列表,但我的程序的想法是练习并更多地了解链接列表的工作原理。

以下是我的程序的代码段。

int loops = *((int *) arg)

现在,我的问题在于class PatientList { private PatientNode head; private int lastArrival; private int size; public PatientList() { head = null; lastArrival = 0; size = 0; } public void add(String name, int severity) { //PatientNode previous; Patient patient; lastArrival++; patient = new Patient(name, lastArrival, severity); head = new PatientNode(patient, head); size++; } 实例变量。无论怎样,我似乎都得size。但是,当我尝试在0方法中计算size时,我的print值正确。这是我的size方法代码:

print

当我使用实例变量时,有人能指出我做错了什么吗?我只是不明白为什么每次在列表中添加内容时我都会public void print() { PatientNode current; //int size = 0; current = head; while (current != null) { System.out.println(current.data); //size++; current = current.next; } System.out.println("Size = " + size()); //size() method actually returns size. System.out.println("Last arrival = " + lastArrival); } 递增0

修改

大小方法可以帮助您解决问题。

size

修改2

public int size() {
 return size;
}

1 个答案:

答案 0 :(得分:0)

我能够解决它。问题在于我正在制作列表的深层副本。我没有做那么大的事情。

public PatientList clone() {
 PatientList copy;
 PatientNode current;
 PatientNode copyCurrent;
 PatientNode newNode;

 copy = new PatientList();
 current = head;
 copyCurrent = null;
 while (current != null) {
  newNode = new PatientNode(current.data, null);
  if (copyCurrent == null) {
   copy.head = newNode;
  } else {
   // last node in copy points to the new node
     copyCurrent.next = newNode;
  }
 // move to the next node in both lists
  copyCurrent = newNode;
  current = current.next;
}
 copy.lastArrival = lastArrival;
 copy.size = size; // had to add this line

 return copy;
}