题解 | #删除有序链表中重复的元素-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;
}
查看9道真题和解析