这是针对类中的一个赋值,我在链接列表中使用My car对象时遇到了问题。car类有两个实例变量(make、price)。如何将变量放入节点类中。
public class CarList {
private CarNode head = null;
private CarNode tail = null;
private int counter = 0;
public CarList() {
head = null;
}
public int getSize() {
return counter;
}
public boolean isEmpty() {
if(counter < 1) {
return true;
}
else {
return false;
}
}
/**public CarNode firstNode() {
return head;
}
public CarNode lastNode() {
return tail;
}
public CarNode getNode(int target) {
CarNode pre;
pre = head;
while(pre.next != null) {
pre = pre.next;
if(pre.data == target) {
return pre;
}
}
return null;
}**/
public void insert (String target) {
if(head==null || target < head.data) {
insert_at_head(target);
return;
}
CarNode pre = head;
while(pre.next != null && target > (pre.next).data) {
pre = pre.next;
CarNode newNode = new CarNode(target);
newNode.next = pre.next;
pre.next = newNode;
}
}
}
//The CarNode Class
class CarNode {
Car data;
CarNode next;
CarNode pre;
public CarNode(Car entry) {
this.data = entry;
next = null;
pre = null;
}
}
//Car Class
public class Car {
int Price;
String Make;
public Car(int pennies, String m) {
this.Price = pennies;
this.Make = m;
}
public int getPrice() {
return Price;
}
public String getMake() {
return Make;
}
public void setPrice(int p) {
Price = p;
}
public void setMake(String m) {
Make = m;
}
}
我无法理解您的插入方法
public void insert (String target) {
if(head==null || target < head.data) {
insert_at_head(target);
return;
}
CarNode pre = head;
while(pre.next != null && target > (pre.next).data) {
pre = pre.next;
CarNode newNode = new CarNode(target);
newNode.next = pre.next;
pre.next = newNode;
}
}
我想应该是:
public void insert (Car target) {
if(head==null || target.compare(head.data)<0) {
insert_at_head(target);
}else{
CarNode pre = head;
while(pre.next != null && target.compare((pre.next).data)>0) {
pre = pre.next;
CarNode newNode = new CarNode(target);
newNode.next = pre.next;
pre.next = newNode;
}
}
}
然后您必须在Car类中创建一个int compare(Car other)
方法。
您不必将这些变量make
和price
"放置"到CarNode类中,但您可以使用car类中的getter和setter方法在节点类中使用。
因此,如果您在Node类中使用已经创建(实例化)的Car
对象,那么您可以像这样使用getter和setter方法
因此,在CarNode
类中,让我们创建一辆汽车,并希望获得这些数据。
this.data.getPrice();
和
this.data.getMake();
由于Java是开源的,您有机会了解作为Java Collection框架一部分的实现LinkedList
。并以类似的方式实现它。
您的insert
方法在我看来是错误的。我相信您正试图以升序插入Car
。你可以这样做:
public void insert (String target) {
counter++;
if(head==null || target < head.data) {
insert_at_head(target);
}else{
/* trying to find position such that cur is greater than target */
CarNode pre = head, cur = head.next;
while(cur != null && cur.data < target) {
pre = cur;
cur = cur.next;
}
/* now insert element between pre and cur */
/* if cur is end then you might reach the end of list */
CarNode c = new CarNode(target);
pre.next = c;
c.next = cur;
if(c.next == null)
tail = c;
}
}