zoukankan      html  css  js  c++  java
  • java实现单链表的增删功能

    JAVA 实现单链表的增删功能

    package linked;
    
    class LinkedTable{
        
    }
    public class LinkedTableTest {
        
        public static void main(String[] args)
        {
            //构造单链表
            Node node1=new Node("name1");
            Node node2=new Node("name2");
            Node node3=new Node("name3");
            Node node4=new Node("name4");
            Node node5=new Node("name5");
            node1.setNextNode(node2);
            node2.setNextNode(node3);
            node3.setNextNode(node4);
            node4.setNextNode(node5);
            
            System.out.println("*******初始链表*******");
            //循环遍历单链表
            outLinked(node1);
            System.out.println();
            
            //插入节点在node2的后面
            addNode(node2);
            
            System.out.println("*****插入node2.5后的链表*****");
            //循环遍历单链表
            outLinked(node1);
            System.out.println();
            
            //删除节点
            node2.setNextNode(node3);
            
            System.out.println("*******删除node2.5*******");
            //循环遍历单链表
            outLinked(node1);
            System.out.println();
            
        }
        
        public static void outLinked(Node node1){
            Node node= new Node();
            node.setNextNode(node1);
            do
            {
                node=node.getNextNode();
                System.out.print(node.getName()+"----");    
            }while(node.getNextNode()!=null);
        }
        
        public static void addNode(Node preNode)
        {
            Node node_add = new Node("name2.5");
            node_add.setNextNode(preNode.getNextNode());
            preNode.setNextNode(node_add);
        }
        
        
    }
    
    
    class Node {
        private String name;
        private Node nextNode;
        public void setName(String name)
        {
            this.name=name;
        }
        public void setNextNode(Node nextNode)
        {
            this.nextNode=nextNode;
        }
        public String getName()
        {
            return this.name;
        }
        public Node getNextNode()
        {
            return this.nextNode;
        }
        public Node(String name)
        {
            this.name=name;
            this.nextNode=null;
        }
        public Node( )
        {
            
        }
        
    }

    单链表添加节点:

      public static void addNode(Node preNode)
        {
            Node node_add = new Node("name2.5");
            node_add.setNextNode(preNode.getNextNode());
            preNode.setNextNode(node_add);
        }

    S1:创建新节点(node_add)

    S2:新节点的next指针指向要插入位置上一个节点(node2)的指针指向的节点

    【node2.5----->node2.nextnode()】

    S3:将要插入位置上一个节点(node2)的指针指向新的节点

    【node2------->node2.5】

     

    注意:

    S2与S3的顺序不可发生改变。

    如果调换顺序:

    【node2------->node2.5】这一步执行完后,node2的指针就会指向node2.5【node2.nextnode()=node2.5】,node3没有任何指针指向他

    【node2.5----->node2.nextnode()】在执行这一步的时候,node2.5的指针将指向自己

     

  • 相关阅读:
    Merge Two Sorted Lists
    4Sum
    Letter Combinations of a Phone Number
    3Sum Closest
    3Sum
    Longest Common Prefix
    Roman to Integer
    Integer to Roman
    Container With Most Water
    Regular Expression Matching
  • 原文地址:https://www.cnblogs.com/excellencesy/p/8646128.html
Copyright © 2011-2022 走看看