这是来自一个旧的作业问题,我已经上交了,但我无法弄清楚。我正在尝试使用我的用户定义的类从特定索引处的 LinkedList 中删除一个元素。下面是我正在处理的伪代码,但它没有与我相同的参数,所以我尝试修改它,但有一个问题。我是一个编程菜鸟(大约 6 个月的经验),仅供参考。我理解 ArrayLists 很好,但 LinkedLists 一直给我带来麻烦。
/*
* Remove the nth element in the list. The first element is element 1.
* Return the removed element to the caller.
function remove(List list, Node node)
if node.prev == null
list.firstNode := node.next
else
node.prev.next := node.next
if node.next == null
list.lastNode := node.prev
else
node.next.prev := node.prev
destroy node
*/
我的方法要求用户输入要删除的索引位置。因为 int 和 LinkEntry 是不同的类型,所以我自然会遇到问题。我不知道如何合并通过参数传递的 int 。
public void remove(int n)
{
LinkEntry<E> remove_this = new LinkEntry<E>();
remove_this.element = n;
for (remove_this = head; remove_this != null; remove_this = remove_this.next)
{
//removes the head if list is only 1 item long
if (head.next == null)
head = remove_this.next;
else
//sets previous element to the next element
remove_this.previous.next = remove_this.next;
//if nothing comes after remove_this, then remove the tail element
if (remove_this.next == null)
tail = remove_this.previous;
else
//sets next previous element to current previous element
remove_this.next.previous = remove_this.previous;
}
}
如果您知道任何地方提供了另一个与我要解决的问题更相似的示例,我将不胜感激。我浏览了我的文字和在线,但没有运气。