我有一個使用linkedList數據結構來處理菜單項(和子菜單項)的程序。我的程序工作除了刪除功能,如果刪除在現有元素之前插入的元素,但如果該元素插入到現有元素之後則不起作用。任何意見非常感謝!這裏的插入功能菜單項的雙向鏈接列表
public Item insert(String newElem, String existingElem, int key) {
// search for given existing element starting at head
currentNode = new Item("");
currentNode = head;
while (!currentNode.element.equals(existingElem)) {
currentNode = currentNode.next;
if (currentNode == null)
break; // cannot find the given key
}
// create a new node
newNode = new Item(newElem);
if (key == 1) // if key = 1 insert after the existing element
{
newNode.next = currentNode.next;
newNode.prev = currentNode;
currentNode.next = newNode;
tail = newNode;
tail.next = null;
counter++;
}
if (key == 2) // if key = 2 insert before the existing element
{
newNode.next = currentNode;
newNode.prev = currentNode.prev;
currentNode.prev = newNode;
head = newNode;
head.prev = null;
counter++;
}
return newNode;
}
我也意識到,我假設只有一個存在的元素,但是,如果我能刪除功能更通用那麼這將是最好的,我不想功能拆分成多種功能!這裏的刪除功能: -
public Item delete(String elem) {
// search for given existing element starting at head
currentNode = new Item("");
currentNode = head;
while (!currentNode.element.equals(elem)) {
currentNode = currentNode.next;
if (currentNode == null)
break; // cannot find the given key
}
// check if element is the first element
if (currentNode == head) {
head = currentNode.next;
} else {
currentNode.prev = currentNode.next;
}
// check if element is the last element
if (currentNode == tail) {
tail = currentNode.prev;
} else {
currentNode = currentNode.prev;
}
return currentNode;
}
你爲什麼重新發明輪子,而不是使用java.util.LinkedList? –
這是一個數據結構類的任務,瞭解鏈接列表的工作 – Cola4ever