删除链表的中间节点和a/b处的节点

来源:互联网 发布:淘宝开企业店要多少钱 编辑:程序博客网 时间:2024/06/14 08:51

给定链表的头结点head,整数a、b,实现删除链表的中间节点的函数,并实现删除位于a/b处节点的函数。

public class RemoveNode {    public class Node{        public int value;        public Node next;        public Node(int data){            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;}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){        cur=head;        while(--n!=1){            cur=cur.next;        }        cur.next=cur.next.next;    }    return head;}}
0 0