• 算法总结之 删除链表的中间节点和a/b处的节点(链表中间节点的重要思想)


    给定链表的表头节点head,实现删除链表的中间节点的函数

    推展: 给定链表的头节点,整数a 和 整数 b,实现删除a/b处节点的函数

    先来分析原问题,

     长度1  直接返回

     长度2 将头节点删除

     长度3 删除第二个  长度4 删除第二个  长度5 删除第三个。。。。。。长度每增加2 删除的节点就向后移动一个节点

    如果要删除一个节点,则需要找到待删除节点的前一个节点

    package TT;
    
    
    public class Test87 {
    
    	public class Node{
    		public int value;
    		public Node next;
    		
    		public Node(int data){
    			this.value = data;
    		}		
    	}
    	
    	public static Node removeMidNode(Node head){
    		if(head==null || head.next == null){
    			return head;
    		}
    		if(head.next.next == null){
    			 return head.next;
    		}
    		Node pre = head;
    		Node cur = head.next.next;
    		while(cur.next !=null & cur.next.next != null){
    			pre=pre.next;
    			cur=cur.next.next;
    		}
    		pre.next = pre.next.next;
    		return head;
    		
    	}
    	
    }
    

      

     公式的套用计算 double r = ((double)(a*n))/((double)b)    n代表链表长度   向上取整就ok   然后计算删除第几个节点 找到需要删除节点的前一个节点即可

    package TT;
    
    import TT.Test85.Node;
    
    
    public class Test87 {
    
        public Node removeByratio(Node head, int a, int b){
            
            if(a<1 |a >b){
                return head;   //不删除任何节点
            }
            int n = 0;
            Node cur = head;
            while(cur !=null ){
                n++;    //计数
                cur = cur.next;
            }
            n = (int) Math.ceil(((double)(a*n))/(double)b);
            if(n==1){
                head = head.next;
            }
            if(n>1){
                cur = head;
                while(--n != 1){
                    cur = cur.next;
                }
                cur.next = cur.next.next;
            }
            return head;
        }
        
        
    }
  • 相关阅读:
    java学习:字符串比较“==”与“equals”的差异及与c#的区别
    航空8联货运单的作用详解
    flash:二次贝塞尔曲线应用生成飞机路径示意图
    javascript:双链表插入排序
    javascript:算法笔记
    玩聚RT 加入对饭否的统计
    随手小记:创业瞎聊十点
    Python的win32serviceutil之疑似BUG
    撕书记忆法
    中文锐推榜优化·二
  • 原文地址:https://www.cnblogs.com/toov5/p/7499061.html
Copyright © 2020-2023  润新知