c_cpp 19.从列表末尾删除第N个节点 - 中 - 2018.8.7
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 19.从列表末尾删除第N个节点 - 中 - 2018.8.7相关的知识,希望对你有一定的参考价值。
/**
1:找第 n 个节点
2:两个指针,一个从起点出发,一个从第 n 个节点处出发,第 2 个指针到 NULL 的时候,第一个指针就是要移除的节点
3:移除节点为第一个节点的时候,需要返回的是第二个节点或者 NULL(只有一个节点)
*/
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
// 找第 n 个节点
ListNode *nextHead = head;
while(nextHead
&& n>1) {
nextHead = nextHead->next;
n--;
}
// 如果没有找到对应节点就直接返回了
if (nextHead == NULL) return head;
// 两个指针,一个从起点出发,一个从第 n 个节点处出发
ListNode *preNode = NULL;
ListNode *curNode = head;
while(nextHead->next != NULL) {
preNode = curNode;
curNode = curNode->next;
nextHead = nextHead->next;
}
// preNode 为空意味着移除节点为第一个节点
if (preNode == NULL) {
return curNode->next;
}
// 移除指定的节点
preNode->next = curNode->next;
return head;
}
};
以上是关于c_cpp 19.从列表末尾删除第N个节点 - 中 - 2018.8.7的主要内容,如果未能解决你的问题,请参考以下文章
java 19.从列表末尾删除第N个节点(#)。java
java 19.从列表末尾删除第N个节点(#)。java
java 19.从列表末尾删除第N个节点(#)。java
java 19.从列表末尾删除第N个节点(#)。java
java 19.从列表末尾删除第N个节点(#)。java
java 19.从列表末尾删除第N个节点(#)。java