错误思想:
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
#include <cstddef>
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
int len=0;
while(pListHead!=NULL){
len++;
pListHead=pListHead->next;
}
int n=len-k;
// ListNode *node=pListHead;
for(int i=0;i<n;i++){
pListHead=pListHead->next;
}
return pListHead;
}
};
在这段代码中,问题出在计算链表长度和寻找第K个节点的逻辑上。
计算链表长度:
在计算链表长度时,代码中使用了一个while循环来遍历链表并计算长度,但在遍历过程中却直接修改了pListHead指针。这会导致在计算长度后,pListHead指针指向链表末尾的NULL,并且在后续代码中使用pListHead指针时,链表的头节点已经丢失了,无法再正确获取链表中的节点。
改正:
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
#include <cstddef>
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
int len=0;
ListNode *head=pListHead;
while(head!=NULL){
len++;
head=head->next;
}
if(k >len){
return NULL;
}
int n=len-k;
for(int i=0;i<n;i++){
pListHead=pListHead->next;
}
return pListHead;
}
};
怎么会有蠢猪捏,下次不许错辣辣啦啦了!!!!!