• 单链表实现


    package com.wyl.linklist;
    
    public class MyLinkList {
    
        private Node head;  //链表的起始节点
        private int size = 0; //记录链表的长度
        /**
         * 定义内部节点类
         * @author wyl
         *
         */
        class Node {
    
            private String name;  //节点的内容
            private Node next; //指向节点的直接后继
            
            public Node(){
                
            }
            public Node(String name){
                this(name, null);
            }
            
            public Node(String name, Node next) {
                this.name = name;
                this.next = next;
            }
        }
        
        /**
         * 初始化链表,创建头结点
         */
        public MyLinkList(){  
            head = new Node();  //头结点为空节点
            head.next = null;
        }
        /**
         * 给链表中增加节点
         * @param data
         */
        public void addNode(String data){
            /* 1、获取表头
             * 2、通过表头找到最后一个元素
             * 3、将新增的节点放到最后一个节点的后面
             * */
            Node p = head;
            while(p.next != null){
                p = p.next; //移动指针,永远指向链表尾部
            }
            p.next = new Node(data);
            size++ ;
        }
        /*删除节点*/
        public void delNode(String data){
            /* 1、获取表头
             * 2、通过表头找到最后一个元素
             * 3、将新增的节点放到最后一个节点的后面
             * */
            if(head.next == null){
                return;
            }
            Node p = head;
            while(p.next != null){
                if(p.next.name.equals(data)){
                    p.next = p.next.next;
                    size--; 
                    break;
                }else{
                    p = p.next;
                }
            }
        }
        
        /*查找数据是否在链表中*/
        public boolean contains(String data){
            Node p = head;
            while(p.next != null){
                if(p.next.name.equals(data)){
                    return true;
                }else{
                    p = p.next;
                }
            }
            return false;
        }
        
        /*在指值的后面插入值*/
        public void insertNode(String param, String data){
            Node p = head;
            while(p.next != null){
                if(p.next.name.equals(param)){
                    Node temp = p.next.next;
                    Node newNode = new Node(data, temp);
                    p.next.next = newNode;
                    return;
                }else{
                    p = p.next;
                }
            }
        }
        
        /*链表遍历*/
        public void iterator(){
            Node p = head;
            if(p.next == null){
                System.out.println("空链表");
            }
            p = p.next;
            while(p.next != null){
                System.out.print(p.name + "==>>");
                p = p.next;
            }
            System.out.print(p.name);
        }
        
        /*链表长度*/
        public int size(){
            return size;
        }
        
        public static void main(String[] args) {
            MyLinkList myLinkList = new MyLinkList();
            myLinkList.addNode("组长");
            myLinkList.addNode("部门经理");
            myLinkList.addNode("主管副总");
            myLinkList.addNode("总经理");
            myLinkList.iterator();
            System.out.println();
            
            myLinkList.delNode("部门经理");
            myLinkList.iterator();
            System.out.println();
            myLinkList.insertNode("主管副总", "经理");
            myLinkList.iterator();
        }
    }
  • 相关阅读:
    经典网络还是VPC,开发者作何选择?
    经典网络还是VPC,开发者作何选择?
    文件系统的几种类型:ext3, swap, RAID, LVM
    文件系统的几种类型:ext3, swap, RAID, LVM
    ★商场上的十则寓言故事!
    ★商场上的十则寓言故事!
    【★】自制网络心理需求大排名!
    【★】自制网络心理需求大排名!
    自制mpls ldp实验
    自制mpls ldp实验
  • 原文地址:https://www.cnblogs.com/studyDetail/p/7189848.html
Copyright © 2020-2023  润新知