2013-02-18 2 views
-1

Это для задания в классе, и у меня возникают проблемы с использованием объектов My car в моем списке ссылок. Класс автомобиля имеет две переменные экземпляра (марка, цена). Как разместить переменные в классе узлов.Как создать список ссылок с использованием объектов в Java.

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; 
} 
} 

ответ

2

я не могу понять, что ваш метод вставки

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; 
    } 
    } 
} 

и чем вы должны создать метод int compare(Car other) в классе автомобилей.

0

Вам не нужно «размещать» эти переменные make и price в классе CarNode, но вы можете использовать ваши методы getter и setter в своем классе автомобилей для использования в вашем классе узлов.

Итак, если вы используете объект Car в уже созданном (созданном экземпляре) классе Node, вы можете просто использовать эти методы getter и setter.

Итак, в классе CarNode, давайте создадим автомобиль и хотим получить эти данные.

this.data.getPrice(); 

и

this.data.getMake(); 
0

В Java с открытым исходным кодом у вас есть возможность натереть взглянуть на реализацию LinkedList, который поставляется как часть основы Java Collection. И реализуйте его аналогичным образом.

0

Вы 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; 
    } 
} 
+0

это не будет работать с моим методом insert_at_head общественности недействительным insert_at_head (данные автомобиля) { \t \t CarNode Темп = новый CarNode (данные); \t \t temp.next = head; \t \t head = temp; \t} – user2084799

+0

Это было непосредственно взято из вашего кода. Только часть, которую я изменил, находится в 'else'. – Shivam

Смежные вопросы