力扣第19题球发现问题

问题遇到的现象和发生背景

力扣19题

问题相关代码,请勿粘贴截图

class Solution {
public:
int  getlength(ListNode* head)
    {
        int length=0;
        while(head)
        {
            length++;
            head=head->next;
        }
        return length;
    }
    ListNode* GetElem(ListNode* head,int n)
    {
        ListNode* b=head->next;
        int  j=1;
        if(n==0)
        {
            return NULL;
        }
        while(b&&j<n)
        {
            j++;
            b=b->next;
        }
        return b;
    }
    ListNode* removeNthFromEnd(ListNode* head, int n) {
    
        int length=getlength(head);
        int x=length-n;
        ListNode* q=nullptr;
        ListNode* p=nullptr;
        p=GetElem(head,x);
        q=p->next;
        p->next=q->next;
        return head;
    }
};

运行结果及报错内容

输入1 2 3 4 5 和2,输出结果为1 2 3 4

我的解答思路和尝试过的方法
我想要达到的结果