双链表 - InsertAfter - Java

时间:2015-04-12 16:05:44

标签: java doubly-linked-list

首先,让我说这是一个类的赋值,我们的任务是编写自己的双链表类,不能使用Java SE中的任何东西(例如LinkedList类)。我们必须使用提供的驱动程序类来使用我们的代码。我并不是要求任何人为我做家庭作业,我只是要求对如何实施这些方法进行某种澄清,因为过去几天我一直在努力解决这个问题。

我们已经提供了一个接口textEditor.java,它提供了驱动程序类driver.java将使用的方法。这些方法包括典型的insert等。人。但我关注的是insertAfter(int lineNum, E line)方法及其对应方insertBefore。尽管我尽了最大的努力并阅读了几篇Java文本以获得指导,但我还是无法将这些工作与int E进行比较。

以下是DoublyLinkedList.java文件中的代码,如发布时所提供的。我想知道如何实现某种索引和检查,以便能够插入跟随之前用户/驱动程序类输入的行。

public class DoublyLinkedList<E> implements TextEditor<E>
{
    Node<E> head, tail;

    public DoublyLinkedList()
    {       
        head = null;
        tail = null;
    }

    public boolean isEmpty()
    {
        return (head == null);  
    }

    public void insert(E line)
    {

    }   

    public void insertAfter(int lineNum, E line)
    {

    }

    public void insertBefore(int lineNum, E line) throws IndexOutOfBoundsException
    {

    }

    public void deleteByPosition(int position)
    {

    }   

    public void printNode(int position)
    {

    }

    public void printAllNodes()
    {

    }

}

我无法做到这一点,经过几个小时的尝试,我已经放弃了能够做到这一点的希望。如果我在这里找不到帮助或仍然无法使用这些方法,我将与我的导师交谈。可能只是因为我在思考这个问题,我希望情况就是这样。

1 个答案:

答案 0 :(得分:1)

我假设您的Node课程如下:

class Node<E> {
  private Node next;
  private E value;
  [...]
}

您可以在DoublyLinkedList课程中添加一个属性,在该课程中保留列表中包含的Node个数。

然后,如果你想要列表的第N个元素,你可以这样做:

private Node getNthElement(int n) {
   Node node = head;
   for (int i=0; i<n; i++) {
      node = node.next;
   }
   return node;
}

这些方法还应该检查列表中是否有足够的元素,等等。但这是主要的想法。