Java 双向链表的实现
最好在下面代码的基础上加入代码来实现,不要删除其中的代码
我是新手,加下列代码中没有的知识点我看不懂!谢谢!
public class Ktlx5
{
public static void main(String[] s)
{
Link2 n = new Link2();
for(int i = 1; i < 100; i++)
{
n.addNode(new Node2(i));
}
n.print();
n.insertBefore(new Node2(25), n.setNode(15));
}
}
class Link2
{
private Node2 head = null;
private Node2 end = null;
private Node2 current = null;
public void addNode(Node2 n)
{
if(head == null)
{
head = end = n;
}
else
{
end.next = n;
end = end.next;
}
}
public void insertBefore(Node2 newnode, Node2 node)
//在前面加
{
newnode.next = node;
newnode.before = node.before;
node.before = newnode;
node.before.before.next = newnode;
}
public void insertAfter(Node2 newnode, Node2 node)
//在后面加
{
newnode.before = node;
newnode.next = node.next;
node.next = newnode;
node.next.next.before = newnode;
}
public void deleteNode(Node2 node) //删除
{
node.before.next = node.next;
node.next.before = node.before;
node.next = null;
node.before = null;
}
public void print()
{
current = head;
while(current != null)
{
System.out.println(current.key);
current = current.next;
}
}
public Node2 setNode(int key)
{
current = head;
while(current == null && current.key != key)
{
current = current.next;
}
return current;
}
}
class Node2
{
public int key = 0;
public Node2 next = null; //后一个
public Node2 before = null; //前一个
public Node2(int key)
{
this.key = key;
}
}
最好在上面代码的基础上加入代码来实现,不要删除其中的代码
------解决方案--------------------刚开始学就溜这样的作业呀?嗬嗬。
你的Node写得没问题,重要的是Node与Node之间的那些线,得连好了,最简单的办法呀,就是画图,一步步的画出来,哪里切断,哪里接上,一目了然。
加油呀。
------解决方案--------------------可以参考JDK里面LinkedLis,那个就是个Doublly Linked List。
------解决方案--------------------java集合框架已提供了链表
------解决方案--------------------