【发布时间】:2018-10-02 22:26:16
【问题描述】:
public void insertBefore(T e) {
if(empty())
{
insert(e);
}
else
{
if(head == current)
{
current.next = new Node<T>(current.data);
current.data = e;
}
else
{
Node<T> oldCurrent = current;
Node<T> newNode = new Node<T>(e);
current = head;
while(current != oldCurrent)
current = current.next;
newNode.next = oldCurrent;
current.next = newNode;
current = current.next;
}
}
}
insertBefore(T e):要求:列表 L 未满。输入:e。结果:一个新节点 包含元素 e 被创建并插入到列表中的当前元素之前。 新元素 e 成为当前元素。如果列表为空,则将 e 插入到 开头也做了头部元素。输出:无
insert() 方法实现
public void insert(T e) {
Node<T> tmp;
if (empty()) {
current = head = new Node<T> (e);
}
else {
tmp = current.next;
current.next = new Node<T> (e);
current = current.next;
current.next = tmp;
}
}
我正在以实施者的身份实施此方法 Linked List 类有两个节点,一个当前节点和一个头,当我们插入一个节点时,当前移动到添加到列表中的最新节点.. 方法检索返回当前节点中的当前数据 我的问题是,当我在 main 中键入以下内容时,我可以测试此方法的 Linked List 实现我没有得到我想要我的方法的结果,所以
l.insert(2);
l.insert(3);
l.insert(4);
l.insertBefore(5);
l.findFirst();
for(int i = 0; i < 4 ; i++)
{
System.out.print(l.retrieve());
l.findNext();
}
我的测试结果:2345 预期结果:2354
【问题讨论】:
-
如果没有完整的代码,调试起来有点困难。例如,您的
insert()方法可能有问题并给出错误的current.... -
我认为你缺少以前的节点..
-
If (head == current) then insert a new node 似乎给了你结果
-
@C.Champagne 我刚刚编辑了它,所以你可以看到我的插入方法代码
-
@CreativeSelf 这只是一个例子。你应该发布你的完整代码......如果可能的话
标签: java methods data-structures