题解 | #删除有序链表中重复的元素-I#

删除有序链表中重复的元素-I

https://www.nowcoder.com/practice/c087914fae584da886a0091e877f2c79

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param head ListNode类 
 * @return ListNode类
 */
struct ListNode* deleteDuplicates(struct ListNode* head ) {
    // write code here
    struct ListNode* p=head;
    struct ListNode* q=NULL;
    if(head->next==NULL || head==NULL)	//排除单个结点或没有结点的情况
        return head;
    q=p;
    p=p->next;			//向后移动一个结点开始循环
    while(p)
    {
        struct ListNode* pre=NULL;
        if(p==NULL)			//增加一个保险,退出循环
            break;
        if(q->val == p->val)
        {
            pre=p;
            p=p->next;
            q->next=p;
            pre->next=NULL;
            free(pre);
        }
        else 
        {
            q=p;
            p=p->next;
        }
    }
    return head;
}

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务