What is problem with my code in this qs?

class Solution {
public:
ListNode* deleteDuplicates(ListNode* q) {
ListNode *p=q;
// ListNode *t=q->next;
while(p && p->next)
{
while(p->val==p->next->val)
{
p->next=p->next->next;
// p=p->next;

        }
        if(p->next!=NULL)
            p=p->next;
    }
    return q;
}

};

//https://leetcode.com/problems/remove-duplicates-from-sorted-list/submissions/
\Question link

Modified Code

class Solution {
public:
    ListNode* deleteDuplicates(ListNode* q) {
        ListNode *p = q;
        while (p && p->next)
        {
            while (p->next && p->val == p->next->val)
            {
                p->next = p->next->next;
                // p=p->next;

            }
            p = p->next;
        }
        return q;
    }
};