赞
踩
对于一个结点head,首先把链表head->next作为头结点的链表中的重复项删除,然后遍历head->next为头结点的链表中的元素,判断遍历到的元素是否与head结点元素相等,如果相等,则删除。对于head->next为头结点的链表而言,可以使用同样的思路来删除以head->next->next为头结点的链表中的重复元素。因此可以使用递归的方法求解
struct ListNode { int val; ListNode *next; }; ListNode* delSame(ListNode* head) { ListNode* pointer = head; ListNode* temp = head; if (head->next == NULL) { return head; } head->next = delSame(head->next); pointer = head->next; while (pointer != NULL) { if (head->data == pointer->data) { temp->next = pointer->next; free(pointer); pointer = temp->next; } else { pointer = pointer->next; temp = temp->next; } } return head; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。