标签:with 问题 let error: code 描述 turn return else
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
1 class Solution { 2 public: 3 ListNode* deleteDuplicates(ListNode* head) { 4 ListNode* p = head; 5 while(p != NULL && p->next != NULL){ 6 if(p->val == p->next->val ){ 7 p->next = p->next->next; 8 } 9 else{ 10 p = p->next; 11 } 12 // if(p != NULL && p->next != NULL && p->next->val != p->val){ 13 // p = p->next; 14 // } 15 } 16 17 return head; 18 19 } 20 };
1. 对于p指针修改相当于对原链表修改(p->next = p->next->next) , p = p->next 为更新p,并没有对原链表修改。
2.以后对链表的操作循环或者判断条件应当注意用
p != NULL && p->next != NULL
如 5和12 行代码,否则容易报试图访问空指针错误
runtime error: member access within null pointer of type ‘struct ListNode‘
所以应该注意空指针的判断
3.本程序存在大量内存泄漏,若用Java 有垃圾回收机制
加上
ListNode* node = p->next; p->next = p->next->next; node = NULL;
标签:with 问题 let error: code 描述 turn return else
原文地址:https://www.cnblogs.com/fresh-coder/p/12989054.html