从有序链表中删除重复元素
给定一个有序链表,删除所有重复的元素,使链表中的每个元素只出现一次。例如,给定链表1->1->2,返回1->2. 给定链表1->1->2->3->3,返回1->2->3.
ListNode *removeDuplicate(ListNode *head)
{//只有一个元素或者为空,直接返回头结点if(head == NULL || head->next == NULL)return head;//node临时变量用于遍历整个链表ListNode *node = head;while(node->next != NULL){//如果本结点的值和下一个节点的值相同,则删除下一个节点if(node->val == node->next->val){ListNode *tmp = node->next;node->next = node->next->next;delete tmp;//注意:此处删除下一个节点后,不需要再次移动node,因为这里还要判断本结点和新的node->next的值}//不同,则向后移动nodeelse{node = node->next;}}return head;
}