繁体   English   中英

将元素添加到双链表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM