博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法总结之 删除链表的中间节点和a/b处的节点(链表中间节点的重要思想)
阅读量:5242 次
发布时间:2019-06-14

本文共 1419 字,大约阅读时间需要 4 分钟。

给定链表的表头节点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;    }        }

 

转载于:https://www.cnblogs.com/toov5/p/7499061.html

你可能感兴趣的文章
【雷电】源代码分析(二)-- 进入游戏攻击
查看>>
POJ 1220 高精度/进制转换
查看>>
cocos2d-x中CCLabelAtlas的小图片拼接
查看>>
BuilderParttern(建造者模式)
查看>>
Codeforces Round #422 A
查看>>
《WebGL高级编程》《WebGL入门指南》读书笔记
查看>>
settimeout()和 setInterval()的区别
查看>>
acm新手刷题攻略之poj
查看>>
Python 2.7 Beta 1发布
查看>>
【AMAD】betamax -- 一个ruby-VCR的模仿品,只支持requests
查看>>
软件工程概论课程评价
查看>>
csharp .net vb 复制图像
查看>>
苏州Uber优步司机奖励政策(8月31日至9月6日)
查看>>
【学习笔记】深入理解js原型和闭包系列学习笔记——精华
查看>>
深入理解js——prototype原型
查看>>
class 2-3 小项目练习
查看>>
Temple Build~dp(01背包的变形)
查看>>
.NET:“事务、并发、并发问题、事务隔离级别、锁”小议,重点介绍:“事务隔离级别"如何影响 “锁”?...
查看>>
Entityframework:“System.Data.Entity.Internal.AppConfig”的类型初始值设定项引发异常。...
查看>>
K60用IRA通过j-link下载失败,解决方法
查看>>