Java 将元素添加到双链接列表中

Java 将元素添加到双链接列表中,java,data-structures,linked-list,Java,Data Structures,Linked List,我的任务是在双链接列表中按索引添加string类型的元素。我将其实现为类Double_list的方法。我还有一个类列表节点 public void Add(String element, int index) { if(index < 0 || index > size) { throw new IndexOutOfBoundsException(); } if(element == null) { throw

我的任务是在双链接列表中按索引添加string类型的元素。我将其实现为类Double_list的方法。我还有一个类列表节点

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;
}
public void Add(字符串元素,int索引)
{
如果(索引<0 | |索引>大小)
{
抛出新的IndexOutOfBoundsException();
}
if(元素==null)
{
抛出新的NullPointerException();
}
如果(索引==大小)
{
添加(元素);
}
其他的
{
List\u node next\u node=get\u node(索引);
List_node prev_node=next_node.prev;
列表\节点新建\节点=新建列表\节点(元素、上一个\节点、下一个\节点);
next_node.prev=新_节点;
prev_node.next=新_节点;
大小++;
}
}
公共布尔添加(字符串元素)
{
if(元素==null)
{ 
抛出新的NullPointerException();
}
List_node last=tail.prev;
列表\节点新建\节点=新建列表\节点(元素、最后一个、尾部);
last.next=新节点;
last.prev=新节点;
大小++;
返回true;
}
私有列表\节点获取\节点(整数索引)
{
int cur_指数=0;
List\u node cur\u node=head.next;
while(cur_指数<指数)
{
cur_node=cur_node.next;
cur_index++;
}
返回cur_节点;
}
当我添加几个元素时,列表的大小会增加,但列表的显示方式与我只添加了一个元素一样。当我试图从列表中删除索引大于0的元素时,我得到了NullPointerException。 你能帮我一下,告诉我哪里出了错吗?

问题是(至少在添加时,我不能确定是否在没有看到代码的情况下删除)你永远不会更新尾部。在列表的末尾添加一个新元素,然后在添加另一个元素时,将第一个元素扔掉并替换它,因为尾部仍然是它的起始位置

Add
中,更改
last.prev=new_节点
tail.prev=新节点

问题在于(至少在添加时,我不能确定是否要在不查看代码的情况下删除),您永远不会更新尾部。在列表的末尾添加一个新元素,然后在添加另一个元素时,将第一个元素扔掉并替换它,因为尾部仍然是它的起始位置


Add
中,更改
last.prev=new_节点
tail.prev=新节点

您需要发布更多的代码,特别是Add(元素)和get_节点(索引)方法。您可以将获得的异常添加到帖子中吗?是否需要在
之后增加大小。Add(元素)
?我添加了Add(元素)和get_节点(索引)方法请注意:您应该抛出一个IllegalArgumentException而不是NullPointerException,因为没有空的“指针”,您需要发布更多的代码,特别是Add(元素)和get_节点(索引)方法。你能将得到的异常添加到帖子中吗?你需要在
之后增加大小吗。添加(元素)
?我在这个例子中添加了方法add(元素)和get_节点(索引)以及关于异常的详细信息。旁白:你应该抛出IllegalArgumentException而不是NullPointerException,因为没有null“指针”