【题目】
给定链表的头节点head,实现删除链表的中间节点的函数
给定链表的头节点head,整数a和b,实现删除位于a/b处节点的函数
//删除链表的中间节点 public class Node{ public int value; public Node next; public Node(int data){ this.value = data; } } 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 removeByration(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(((doule)(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; }