我正在寻找一种方法,它接收对象的信息,创建对象的实例,设置信息,然后创建一个节点并将信息设置到节点,最后将节点插入我所属的链表。链接列表只需按rfidTag
String
类型进行组织,该类型是9位十六进制表示。这是我到目前为止(我忽略了“by 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
}
我当前正试图让我的其他尝试在没有任何异常的情况下运行!完成后会添加!
答案 0 :(得分:1)
假设 cursor 指向要插入节点的节点。
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++;
这样,如果第一次插入节点,那么All(head,tail和cursor)将指向第一个节点。如果已经存在n个节点,则我们需要根据光标的位置插入新节点。如果光标指向尾部,则在末尾添加新节点并更新尾部。如果光标指向任何其他节点(包括头部),则在光标和尾部未触及后插入新节点。在两种情况下,头部都是不受影响的,即,头部总是指向第一个节点。 [Tail将始终指向最后一个节点 - 并相应地更新]
希望这会有所帮助!!