我写了一个关于病人的程序。我有自己的链表收集类。 我本可以使用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;
}
答案 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;
}