0

オブジェクトの情報を取得し、オブジェクトのインスタンスを作成し、情報を設定し、ノードを作成してノードに情報を設定し、最後にノードをリンクされたリストに挿入するメソッドを使用しようとしていますそれが属する場所。リンクされたリストrfidTag Stringは、9 桁の 16 進数表現であるタイプによってのみ編成する必要があります。これが私がこれまでに持っているものです(「rfidTagによる」部分は無視しました)...

public class ItemList {

    ItemInfoNode head;
    ItemInfoNode tail;
    ItemInfoNode cursor;

    int listCount = 0;

    public ItemList(){
        head = cursor = tail = null;
    }

    public void insertInfo(String name, String rfidTag, String initPosition,
            double price) {
        ItemInfo obj = new ItemInfo(name, rfidTag, initPosition, initPosition, price);
        ItemInfoNode temp = new ItemInfoNode();
        temp.setInfo(obj);
    }
}

今、私は何を入れるべきかについて少しの手がかりを持っていませんが、私が試したことを示し、私が迷っていて達成しようとしている場所についてコメントを追加します...

ItemInfo obj = new ItemInfo(name, rfidTag, initPosition, initPosition, price);
ItemInfoNode temp = new ItemInfoNode();
temp.setInfo(obj);

if (head == null) {
    head = temp;
    cursor = temp;
    tail = temp;
    head.setNext(cursor);
    tail.setPrev(cursor);
    listCount++;
} else {
    cursor = temp;
    cursor.setPrev(head);
    cursor.setNext(tail);

    System.out.println(cursor.getPrev().getInfo().getName());
    System.out.println(cursor.getInfo().getName());
    System.out.println(cursor.getNext().getInfo().getName());
    // Now I stop here because I do not understand how to put a 3rd in
    // between my head and tail without losing the middle nodes info (cursor)
    // These printlns are here to help me understand what exactly is happening!
    // So I am rather unclear one what my next step should be
}

現在、例外をスローせずに他の試行を実行しようとしています! 完成したら追加します!

4

1 に答える 1

1

カーソルがノードを指していると仮定し、その後にノードが挿入されます。

ItemInfo obj = new ItemInfo(name, rfidTag, initPosition, initPosition, price);
ItemInfoNode temp = new ItemInfoNode();
temp.setInfo(obj);

if(head == null){
  head = tail = cursor = tmp;
}

else{
  if(cursor == tail)
  {
    cursor.setNext(tmp);
    tmp.setPrev(cursor);
    tail = tmp;
  }
  else
  {
    tmp.setNext(cursor.getNext());
    tmp.setPrev(cursor);

    cursor.getNext().setPrev(tmp);
    cursor.setNext(tmp);
  }
}

listCount++;

これにより、ノードが初めて挿入された場合、すべて (ヘッド、テール、およびカーソル) は最初のノードを指します。n 個のノードが既に存在する場合、カーソルの位置に応じて新しいノードを挿入する必要があります。カーソルがテールを​​指している場合、新しいノードが最後に追加され、テールが更新されます。カーソルが他のノード (head を含む) を指している場合、新しいノードはカーソルの後に挿入され、tail は変更されません。どちらの場合も、ヘッドは変更されません。つまり、ヘッドは常に最初のノードを指します。[テールは常に最後のノードを指し、それに応じて更新されます]

お役に立てれば!!

于 2013-02-21T04:13:30.273 に答える