83删除链表中的重复元素
Posted hehesunshine
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了83删除链表中的重复元素相关的知识,希望对你有一定的参考价值。
1、思路
- 吸取了前几道题设置头节点重新插入的想法
- 建立空的头节点,和一个指向结点的指针p用来控制插入的位置
- 判断第一个值和第二个值是否相等相等,链表头指针向后移动,直至不等,把head结点插入到空结点后面,直至完成
2、错误
错误提示:Line 16: Char 18: runtime error: member access within null pointer of type ‘struct ListNode‘ (solution.cpp)
错误原因:没有判断当前指针是否指向了一个有意义的位置。
3、代码
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 class Solution { 10 public: 11 ListNode* deleteDuplicates(ListNode* head) { 12 ListNode *phead,*p; 13 phead=new ListNode(0); 14 phead->next=NULL; 15 p=phead; 16 if(head!=NULL&&head->next==NULL) return head;//判断当前指针是否指向有意义的位置 17 while(head!=NULL){ 18 19 while(head->next!=NULL&&head->next->val==head->val){//判断当前指针是否指向有意义的位置 20 head=head->next; 21 } 22 p->next=head; 23 p=p->next; 24 head=head->next; 25 } 26 return phead->next; 27 } 28 };
以上是关于83删除链表中的重复元素的主要内容,如果未能解决你的问题,请参考以下文章