-1

これはクラスでの課題で、リンク リストでマイ カー オブジェクトを使用するのに問題があります。car クラスには 2 つのインスタンス変数 (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;
}
}
4

4 に答える 4

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)Car クラスでメソッドを作成する必要があります。

于 2013-02-18T21:32:35.270 に答える
0

makeこれらの変数をCarNode クラスに「配置」する必要はありませんがprice、車のクラスでゲッター メソッドとセッター メソッドを使用して、ノード クラスで使用できます。

Carそのため、すでに作成 (インスタンス化) されている Node クラスのオブジェクトを使用している場合は、そのように getter メソッドと setter メソッドを使用できます。

クラス内CarNodeで車を作成し、そのデータを取得します。

this.data.getPrice();

this.data.getMake();
于 2013-02-18T21:36:20.290 に答える
0

LinkedListJava はオープン ソースであるため、Java Collection フレームワークの一部として提供される実装を検討する絶好の機会があります。そして、それを同様の方法で実装します。

于 2013-02-18T21:38:40.377 に答える
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;
  }
}
于 2013-02-18T21:47:21.883 に答える