leetcodeSubmission Details 删除链表倒数第n个结点
2016-09-03 19:40
441 查看
删除链表倒数第n个节点,要求只遍历一次
需要2个指针left和right
举个例子,删除倒数第2个
0->1->2->3->4
left指向0,right指向0
right向右移动n=2位,即移动到2
接着left和right一起向右移动。当right移动到最后一个元素4时,left指向2
此时left的下一位就是要删除的元素
然后left指向4,即完成删除
PS:若移动n=5,则right就会直接移动到NULL,这时候说明要删除的是第一个元素,即头节点要被改变。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* removeNthFromEnd(struct ListNode* head, int n) {
int i=0;
struct ListNode* p_left,* p_right,* p_delete;
p_left=head;
p_right=head;
i=n;
while(i--)
{
p_right=p_right->next;
}
if(p_right==NULL)
{
head=p_left->next;
return head;
}
while(p_right->next!=NULL)
{
p_right=p_right->next;
p_left=p_left->next;
}
p_delete=p_left->next;
p_left->next=p_delete->next;
return head;
}
需要2个指针left和right
举个例子,删除倒数第2个
0->1->2->3->4
left指向0,right指向0
right向右移动n=2位,即移动到2
接着left和right一起向右移动。当right移动到最后一个元素4时,left指向2
此时left的下一位就是要删除的元素
然后left指向4,即完成删除
PS:若移动n=5,则right就会直接移动到NULL,这时候说明要删除的是第一个元素,即头节点要被改变。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* removeNthFromEnd(struct ListNode* head, int n) {
int i=0;
struct ListNode* p_left,* p_right,* p_delete;
p_left=head;
p_right=head;
i=n;
while(i--)
{
p_right=p_right->next;
}
if(p_right==NULL)
{
head=p_left->next;
return head;
}
while(p_right->next!=NULL)
{
p_right=p_right->next;
p_left=p_left->next;
}
p_delete=p_left->next;
p_left->next=p_delete->next;
return head;
}
相关文章推荐
- LeetCode 19. Remove Nth Node From End of List--删除链表的倒数第n个结点
- leetcode解题之 19. Remove Nth Node From End of List java 版(删除链表倒数第n个结点)
- <LeetCode> 题174:删除链表中倒数第n个结点
- 在单向链表中如何快速查到倒数第n个节点 这简直是一种神奇的思路!!!!leetcode 删除倒数第n个节点
- Remove Nth Node From End of List 删除链表的倒数第n个结点
- 删除链表中倒数第n个结点
- 【LeetCode】Remove Nth Node From End of List 删除链表中倒数第n个节点- Easy +
- 删除链表的倒数第n个结点 Remove Nth Node From End of List
- LeetCode[19]Remove Nth Node From End of List 删除链表倒数第n个元素
- leetcode19--删除链表中倒数第n个节点
- LeetCode 从链表中删除倒数第N个节点
- Remove Nth Node From End of List 链表删除倒数第N个元素@LeetCode
- [LeetCode]78. Remove Nth Node From end of List删除链表中倒数第N个节点
- LeetCode(Remove Nth Node From End of List)删除链表倒数第n个节点
- [LeetCode] 19. Remove Nth Node From End of List 删除链表的倒数第N个节点 @python
- LeetCode 19题 删除链表给定的倒数第N个值
- LeetCode | Remove Nth Node From End of List(移除链表中倒数第n个结点)
- 链表——删除链表中倒数第n个结点(时间复杂度为O (n))
- [C++]LeetCode 19: Remove Nth Node From End of List(删除链表中倒数第n个节点)
- LeetCodet题解--19. Remove Nth Node From End of List(删除链表的倒数第n个元素)