题目中给的链表头结点也有值,我们要先给链表创建一个结点值为null的新头结点
设置一个qHead,当前节点的下一个节点不为null且两节点值相同时,qHead向前移动
此时分两种情况:①移动了:指向头节点的pHead指向再往前移动一位的qHead,相当于删除中间重复的值
②没有移动:说明没有和Phead同值的节点,这时候qHead和pHead都前移,测试下一个节点
/*function ListNode(x){
this.val = x;
this.next = null;
}*/
function deleteDuplication(pHead)
{
// write code here
var newHead = new ListNode('head');
newHead.next = pHead;
var pHead = newHead;
var qHead = pHead.next;
while(qHead) {
while((qHead.next!=null) && (qHead.val == qHead.next.val)) {
qHead = qHead.next;
}
//没移动
if(pHead.next == qHead) {
pHead = qHead;
qHead = qHead.next;
}
//移动了
else {
qHead = qHead.next;
pHead.next = qHead;
}
}
return newHead.next;
}