[英]Add element to a double linked list
我有一个任务是在双链表中按索引添加字符串类型的元素。 我将其实现为Double_list类的方法。 我也有类List_node。
public void Add(String element, int index)
{
if(index < 0 || index > size)
{
throw new IndexOutOfBoundsException();
}
if(element == null)
{
throw new NullPointerException();
}
if(index == size)
{
this.Add(element);
}
else
{
List_node next_node = get_node(index);
List_node prev_node = next_node.prev;
List_node new_node = new List_node(element, prev_node, next_node);
next_node.prev = new_node;
prev_node.next = new_node;
size++;
}
}
public boolean Add(String element)
{
if(element == null)
{
throw new NullPointerException();
}
List_node last = tail.prev;
List_node new_node = new List_node(element, last, tail);
last.next = new_node;
last.prev = new_node;
size++;
return true;
}
private List_node get_node(int index)
{
int cur_index = 0;
List_node cur_node = head.next;
while(cur_index < index)
{
cur_node = cur_node.next;
cur_index++;
}
return cur_node;
}
当我添加几个元素时 ,列表的大小会增加,但是列表的显示方式就像我仅添加一个元素一样 。 当我尝试从列表中删除大于0的索引元素时,出现NullPointerException。 您能帮我告诉我哪里出了错吗?
问题(至少添加时,我不能确定是否在删除之前也看不到该代码)是您永远不会更新尾巴。 您在列表的末尾添加了一个新元素,然后在添加另一个元素时,将第一个元素扔掉并替换了它,因为tail仍然恰好是它的起点。
在Add
,更改last.prev = new_node;
到tail.prev = new_node;
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.