链表问题——删除链表的中间节点和a/b处的节点
来源:互联网 发布:北京seo 编辑:程序博客网 时间:2024/05/17 08:11
【题目】
给定链表的头结点head,实现删除链表的中间节点的函数
例如:
不删除任何节点;
1->2,删除节点1;
1->2->3,删除节点2;
1>2->3->4,删除节点2;
1->2->3->4->5,删除节点3;
进阶:
给定链表的头结点head、整数a和b,实现删除位于a/b处节点的函数
例如:
链表:1->2->3->4->5,假设a/b的值为r。
如果r等于0,不删除任何节点;
如果r在区间(0,1/5]上,删除节点1;
如果r在区间(1/5,2/5]上,删除节点2;
如果r在区间(2/5,3/5]上,删除节点3;
如果r在区间(3/5,4/5]上,删除节点4;
如果r在区间(4/5,1]上,删除节点5;
如果r等于1,不删除任何节点。
【代码实现】
class Node{ public int value; public Node next; public Node(int data){ this.value = data; }}class test{ //删除中间节点 public 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; } //删除a/b处的节点 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; }}
阅读全文
2 0
- 链表问题---删除链表的中间节点和a/b处的节点
- 链表问题 删除链表的中间节点和a/b处的节点
- 链表问题(2)-- 删除聊表的中间节点和a/b处的节点
- 链表问题——删除链表的中间节点和a/b处的节点
- 删除链表的中间节点和a/b处的节点
- 删除链表的中间节点和a/b处的节点
- 【链表】- 删除链表的中间节点和a/b处的节点
- 删除链表的中间节点和a/b处节点
- 左程云_算法与数据结构 — 链表问题 — 03删除链表的中间节点和a/b处的节点
- 删除链表中的中间节点和 a/b 处的结点 Python 版
- 左神的书——《程序员代码面试指南》之删除链表的中间节点或a/b节点 c++实现
- 删除链表的中间节点
- 删除链表的中间节点
- 删除链表的中间节点
- 删除链表a/b处的节点(链表)
- 寻找和删除链表的中间节点
- 删除链表中间节点
- 删除链表中间节点
- Java byte数组按位转化为long类型
- Java多线程中wait, notify and notifyAll的使用
- error MSB8031: Building an MFC project for a non-Unicode character set is deprecated
- opencv 链接共享库文件失败
- MySQL IFNULL()函数的用法
- 链表问题——删除链表的中间节点和a/b处的节点
- iptables nat及端口映射 【转】
- Camera原理
- 【队内胡策 11.3】 T1 T2
- 错误:Peer's certificate issuer has been marked as not trusted by the user
- TextToSpeech的使用
- 安装ftp服务器
- 对比数据库和DBF文件中的列名
- eclipse把项目发布到GitHub。操作笔记,自己备用