2013-02-21 1 views
0

Я ищу метод, который принимает информацию об объекте, создает экземпляр объекта, устанавливает информацию, затем создает узел и устанавливает информацию в узел, и наконец, вставляет узел в мой связанный список, где он принадлежит. Связанный список должен быть организован только rfidTagString, который представляет собой девятизначное шестнадцатеричное представление. Вот то, что я до сих пор (я игнорировал «по 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 
} 

в настоящее время я пытаюсь получить мои ДРУГИЕ ПОПЫТКИ работать без метания EXCEPTIONS! ДОБАВЛЯЕМ, КОГДА ЗАВЕРШЕНО!

+0

Есть ли причина, по которой вы не можете использовать ArrayList ? – blearn

+0

Это для класса, мне не разрешено использовать какие-либо структуры данных, это должно быть сделано вручную, я думаю, вы могли бы сказать, но я никогда не использовал LinkedLists, как это, и DLL. Также мои тексты ничего не помогают мне ... – Sherifftwinkie

+0

Вы хотите вставить элементы в конце или в середине ??? Не могли бы вы сказать, что такое значение _cursor_. Я имею в виду, что это значит? – asifsid88

ответ

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 количество узлов уже присутствует, нам нужно вставить новый узел в соответствии с положением курсора. Если курсор указывает на хвост, то новый узел добавляется в конец, а хвост обновляется. Если курсор указывает на любой другой узел (включая голову), то новый узел вставлен после того, как курсор и хвост не тронут. В обоих случаях голова нетронута, т. Е. Голова всегда будет указывать на первый узел. [Хвост всегда указывает на последний узел - и соответственно обновляется)

Надеюсь, это поможет!

+0

Я действительно не нахожу причины использовать _cursor_, если у вас есть _tail_ для отслеживания. Еще скажите точно, чего вы пытаетесь достичь. – asifsid88

+0

Как я уже говорил выше, мне нужно упорядочить порядок этих узлов элементом rfidTag из их содержащегося объекта ItemInfo. Поэтому мой план состоял в том, чтобы использовать курсор в качестве средства для выяснения, где узел принадлежит списку узлов, а затем поместить узел в эту позицию между узлами say ... x и y. – Sherifftwinkie

+0

Woah это очень помогает, большое вам спасибо! – Sherifftwinkie