题解 | #删除有序链表中重复的元素-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 }