描述:给定一个排序链表,删除所有重复的元素每个元素只
解题思路:首先判断链表是不是非空。如果不是空的话,找到值相等的两个元素,并且将第二个元素删,且前一个元素的后继指向被删除元素以前的后继。
代码:/**
* Definition of ListNode
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param head: The first node of linked list.
* @return: head node
*/
ListNode *deleteDuplicates(ListNode *head) {
// write your code here
if (head== NULL) return NULL;
if (head->next== NULL)return head;
ListNode *p, *q;
p= head;
q= NULL;
while (p!= NULL) {
if (q!= NULL&& p->val== q->val) {
q->next= p->next;
p= q->next;
}
else {
q= p;
p= p->next;
}
}
return head;
}
};
做题感想:定义两个指针变量,确定两个值相同元素的位置,并将后面一个删除。