JAVA 양 방향 링크 의 추가 삭제 기능 을 실현 하 는 방법

6667 단어 JAVA양 방향 링크
JAVA 는 양 방향 링크 의 추가 삭제 기능,전체 코드 를 실현 합 니 다.

package linked;
class LinkedTable{  
}
public class LinkedTableTest {
   //     
  static Node node1 = new Node("name1");
  static Node node2 = new Node("name2");
  static Node node3 = new Node("name3");
  static Node node4 = new Node("name4");
  static Node node5 = new Node("name5");
  public static void main(String[] args)
  {
    //    
    setPoint();
    
    //    
    System.out.println("*******    *******");
    out(node1,node5);
    System.out.println();
    
    //     node2   
    addNode(node2,node3);
    
    //     
    System.out.println("*******  node2.5*******");
    out(node1, node5);
    System.out.println();
        
    //    
    node2.setNextNode(node3);
    node3.setNextNodeF(node2);
    
    //     
    System.out.println("*******  node2.5*******");
    out(node1, node5);
    System.out.println();
    
  }
  
  //    
  public static void setPoint()
  {
    //      
    node1.setNextNode(node2);
    node2.setNextNode(node3);
    node3.setNextNode(node4);
    node4.setNextNode(node5);
    //      
    node5.setNextNodeF(node4);
    node4.setNextNodeF(node3);
    node3.setNextNodeF(node2);
    node2.setNextNodeF(node1);
  }
  
  //       
  public static void outLinked(Node startNode){
    Node node= new Node();
    node.setNextNode(startNode);
    do
    {
      node=node.getNextNode();
      System.out.print(node.getName()+"----");  
    }while(node.getNextNode()!=null);
  }
  
  //         
  public static void outLinkedF(Node endNode){
    Node node= new Node();
    node.setNextNodeF(endNode);
    do
    {
      node=node.getNextNodeF();
      System.out.print(node.getName()+"----");  
    }while(node.getNextNodeF()!=null);
  }
  
  //    
  public static void out(Node startNode,Node endNode)
  {
    outLinked(startNode);
    System.out.println();
    outLinkedF(endNode);    
  }
  
  //    
  public static void addNode(Node preNode,Node nextNode)
  {
    Node node_add = new Node("name2.5");
    node_add.setNextNode(preNode.getNextNode());
    preNode.setNextNode(node_add);    
    node_add.setNextNodeF(nextNode.getNextNodeF());
    nextNode.setNextNodeF(node_add);
  }  
}

class Node {
  private String name;
  private Node nextNode;
  private Node nextNodeF;
  public void setName(String name)
  {
    this.name=name;
  }
  public void setNextNode(Node nextNode)
  {
    this.nextNode=nextNode;
  }
  public void setNextNodeF(Node nextNodeF)
  {
    this.nextNodeF=nextNodeF;
  }
  public String getName()
  {
    return this.name;
  }
  public Node getNextNode()
  {
    return this.nextNode;
  }
  public Node getNextNodeF()
  {
    return this.nextNodeF;
  }
  public Node(String name)
  {
    this.name=name;
    this.nextNode=null;
  }
  public Node( )
  {    
  }  
}
1.node 노드 를 구성 하려 면 두 개의 지침 이 필요 합 니 다.하 나 는 다음 요 소 를 저장 하 는 위치 이 고 하 나 는 다음 요 소 를 저장 하 는 위치 입 니 다.

매개 변수 설명:
name:node 자체 정 보 를 저장 하 는 데 사용 합 니 다.
nextNode:정방 향 포인터 저장 에 사용
nextNodeF:역방향 포인터 저장 에 사용

class Node {
  private String name;
  private Node nextNode;
  private Node nextNodeF;
  public void setName(String name)
  {
    this.name=name;
  }
  public void setNextNode(Node nextNode)
  {
    this.nextNode=nextNode;
  }
  public void setNextNodeF(Node nextNodeF)
  {
    this.nextNodeF=nextNodeF;
  }
  public String getName()
  {
    return this.name;
  }
  public Node getNextNode()
  {
    return this.nextNode;
  }
  public Node getNextNodeF()
  {
    return this.nextNodeF;
  }
  public Node(String name)
  {
    this.name=name;
    this.nextNode=null;
  }
  public Node( )
  {    
  }  
}
2.노드 를 만 들 고 포인터 연결 노드 를 설정 합 니 다.
정방 향 포인터:다음 노드 를 가리 키 기
역방향 노드:이전 노드 를 가리 키 기

//     
  static Node node1 = new Node("name1");
  static Node node2 = new Node("name2");
  static Node node3 = new Node("name3");
  static Node node4 = new Node("name4");
  static Node node5 = new Node("name5");

public static void setPoint()
  {
    //      
    node1.setNextNode(node2);
    node2.setNextNode(node3);
    node3.setNextNode(node4);
    node4.setNextNode(node5);
    //      
    node5.setNextNodeF(node4);
    node4.setNextNodeF(node3);
    node3.setNextNodeF(node2);
    node2.setNextNodeF(node1);
  }
3,링크 순환 출력

public static void outLinked(Node startNode){
    Node node= new Node();
    node.setNextNode(startNode);
    do
    {
      node=node.getNextNode();
      System.out.print(node.getName()+"----");  
    }while(node.getNextNode()!=null);
  }


  public static void outLinkedF(Node endNode){
    Node node= new Node();
    node.setNextNodeF(endNode);
    do
    {
      node=node.getNextNodeF();
      System.out.print(node.getName()+"----");  
    }while(node.getNextNodeF()!=null);
  }
4,노드 추가

  public static void addNode(Node preNode,Node nextNode)
  {
    Node node_add = new Node("name2.5");
    node_add.setNextNode(preNode.getNextNode());
    preNode.setNextNode(node_add);
    
    node_add.setNextNodeF(nextNode.getNextNodeF());
    nextNode.setNextNodeF(node_add);
  }
5,노드 삭제

node2.setNextNode(node3);
node3.setNextNodeF(node2);
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기