最好在下面代码的基础上加入代码来实现,不要删除其中的代码
我是新手,加下列代码中没有的知识点我看不懂!谢谢! 
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; 


最好在上面代码的基础上加入代码来实现,不要删除其中的代码

解决方案 »

  1.   

    我刚刚学Java,只能写到这,如果可以实现双向链表,里面的插入、删除就都可以实现了,这也是我们老师给留的作业,希望各位前辈指点。
      

  2.   

    刚开始学就溜这样的作业呀?嗬嗬。
    你的Node写得没问题,重要的是Node与Node之间的那些线,得连好了,最简单的办法呀,就是画图,一步步的画出来,哪里切断,哪里接上,一目了然。加油呀。
      

  3.   

    可以参考JDK里面LinkedLis,那个就是个Doublly Linked List。
      

  4.   

    我又改了一下,但删除功能有错误,请各位帮忙看看
    public class Lx2

    public static void main(String args[])

    Link3 n = new Link3(); 
    for(int i=0;i<5;i++) 
    {
    n.addNode(new Node3(i)); 
    }
    n.insertAfter(n.setNode(1),new Node3(100)); 
    n.deleteNode(n.setNode(4));
    n.print(); 

    }
     
    //链表 
    class Link3

    Node3 head = null; 
    Node3 end = null; 
    Node3 current = null;  
    void addNode(Node3 n)

    if(head == null)

    head = end = n; 
    }
    else

    end.next = n; 
    n.before = end; 

    end = n; 

    public Node3 setNode(int key)
    {
    current = head;
    while(current != null && current.key != key)
    {
    current = current.next;
    }
    return current;
    }
     public void insertAfter(Node3 after,Node3 key)

    current.next.before = key; 
    key.next = current.next; 
    current.next = key; 
    key.before = current; 
    }
     
    public void deleteNode(Node3 node)                           //删除
    {
    node.before.next = node.next;
    node.next.before = node.before;
    node.next = null;
    node.before = null;
    }

    void print()

    current = head; 
    while(current!=null)

    System.out.println(current.key); 
    current = current.next; 


    }
    //节点 
    class Node3

    int key = 0; 
    Node3 next = null; 
    Node3 before = null; 
    Node3(int key)

    this.key = key; 

    }
    我又改了一下,但删除功能有错误,请各位帮忙看看
      

  5.   

    public void insertAfter(Node3 after, Node3 key) {
        current.next.before = key;    //没仔细看你的代码,不过我认为你这儿不对.
        key.next = current.next;
        current.next = key;
        key.before = current;
      }
      

  6.   

    public class Lx1_lianbiao

    public static void main(String args[])

    Link n = new Link(); 
    for(int i=1;i<5;i++) 
    {
    n.addNode(new Node(i)); 
    }
    n.insertAfter(n.setNode(3),new Node(200)); 
    n.insertBefore(n.setNode(-1),new Node(100));
    n.deleteNode(n.setNode(3));
    n.print(); 
    n.printDes();

    }
    class Link                                            //链表

    Node head = null; 
    Node end = null; 
    Node current = null;  
    void addNode(Node n) 

    if(head == null)

    head = end = n; 
    }
    else

    end.next = n; 
    n.before = end; 
    end = end.next;
    end.before = n.before;

    end = n; 

    public Node setNode(int key) 
    {
    current = head;
    if(key != 0)
    {
    while(current != null && current.key != key)
    {
    current = current.next;
    }
    return current;
    }
    return null;
    }
    public void insertAfter(Node node,Node newnode)   //后插入

    if(node == null)
    {
    System.out.println("您要插入的位置不存在,请在链表范围内插入!");
    }
    else if(node.key == end.key)
    {
    end = newnode;
    node.next = newnode;
    newnode.before = node;
    }
    else
    {
    node.next.before = newnode;
    newnode.next = node.next;
    node.next = newnode; 
    newnode.before = node; 
    }
    }
    public void insertBefore(Node node,Node newnode)   //前插入

    if(node == null)
    {
    System.out.println("您要插入的位置不存在,请在链表范围内插入!");
    }
    else if(node.key == head.key)
    {
    head = newnode;
    node.before = newnode;
    newnode.next = node;
    }
    else
    {
    node.before.next = newnode;
    newnode.before = node.before;
    node.before = newnode;
    newnode.next = node;
    }
    }
    public void deleteNode(Node node)                  //删除
    {
    if(node.key > head.key && node.key < end.key)
    {
    node.before.next = node.next;
    node.next.before = node.before; }
    else if(node.key == end.key)
    {
    end = node.before;
    end.next = null;  
    }
    else if(node.key == head.key)
    {
    head = node.next;
    head.before = null;
    node = null;
    }
    }

    void print()

    current = head; 
    while(current!=null)

    System.out.println(current.key); 
    current = current.next; 


    void printDes()

    current = end; 
    while(current!=null)

    System.out.println(current.key); 
    current = current.before; 

    }
    }
    class Node                                              //节点

    int key = 0; 
    Node next = null; 
    Node before = null; 
    Node(int key)

    this.key = key; 

    }
    这回终于对了,出错的地方都改过来了!
      

  7.   

    谢谢这位仁兄,帮我大忙
    我JAVA老师布置的课程设计的题目就是双向链表的实现
    老师的第二个要求就是要使用界面显示结果
    如果可能能不能帮我实现
    对了,一个建议代码的解释更详细些
    对于我们对JAVA不懂的人大有用处
    总之,还是谢你