剑指offer-删除链表中重复的结点

来源:互联网 发布:如何备案域名 编辑:程序博客网 时间:2024/06/05 08:12

题目:

在排序链表中,删除重复的结点。


struct ListNode{int data;ListNode *next;};void deleteDuplication(ListNode **head){if (head == NULL || *head == NULL)return;ListNode *preNode = NULL;ListNode *pNode = *head;while (pNode != NULL){ListNode *pNext = pNode->next;bool needDelete = false;if (pNext != NULL&&pNext->data == pNode->data)needDelete = true;if (!needDelete){preNode = pNode;pNode = pNode->next;}else{int Data = pNode->data;ListNode *toBeDelete = pNode;while (toBeDelete != NULL&&toBeDelete->data == Data){pNext = toBeDelete->next;delete toBeDelete;toBeDelete = NULL;toBeDelete = pNext;}if (preNode == NULL)*head = pNext;else{preNode->next = pNext;}pNode = pNext;}}}