给定一个有序单链表(从小到大有序)的头结点head(该结点有值),删除链表中的重复元素,使链表中的所有元素都只出现一次。如当输入 {1,1,2} 时,经删除后,原链表变为 {1,2},对应的输出为 {1,2}。
代码实现
C语言代码:
struct ListNode* deleteDuplicates(struct ListNode* head ) { if(head == NULL) return head; struct ListNode *p; p = head; while(p->next != NULL) { if(p->val == p->next->val) p->next = p->next->next; else p = p->next; } return head; }
图解代码
第一步:定义一个新结点,将其指向头结点
第二步:当前结点的值与当前结点的下一个结点数值做比较:如果数值相等,直接将当前结点指向下一个结点的next结点;不相等的话继续遍历结点
第三步:返回头结点
全部0条评论
快来发表一下你的评论吧 !