题解 | #删除有序链表中重复的元素-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
    if(head==NULL ||head->next==NULL)//首先,判断链表是否为空或者只有一个节点。如果是,则直接返回原链表头节点 head。
    {
        return head;
    }
    struct ListNode *current=head;//创建一个指针 current,初始化为链表头节点 head
    while(current->next!=NULL){//使用循环遍历链表,直到 current 的下一个节点为 NULL
        if(current->val==current->next->val){//在循环中,判断 current 的值是否与下一个节点的值相等。
            struct ListNode *duplicate=current->next;//如果相等,说明存在重复元素。创建一个指针 duplicate,指向下一个节点,
            current->next=current->next->next;//然后将 current 的 next 指针指向下下个节点,即跳过重复节点
            free(duplicate);
        }else{
            current=current->next;//如果不相等,说明没有重复元素,将 current 指针移动到下一个节点
        }
    }
    return head;//循环结束后,返回原链表的头节点 head
}

全部评论

相关推荐

想润的芹菜人狠话不多:把其中一个老总放中间都会得罪另一个
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务