您的位置:首页 > 其它

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

2017-12-07 11:45 357 查看
【题目】

给定链表的头节点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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐