首先,让我说这是一个类的赋值,我们的任务是编写自己的双链表类,不能使用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()
{
}
}
我无法做到这一点,经过几个小时的尝试,我已经放弃了能够做到这一点的希望。如果我在这里找不到帮助或仍然无法使用这些方法,我将与我的导师交谈。可能只是因为我在思考这个问题,我希望情况就是这样。
答案 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;
}
这些方法还应该检查列表中是否有足够的元素,等等。但这是主要的想法。