删除排序链表中的重复元素
2017-03-27 22:24
309 查看
1.问题描述:给定一个排序链表,删除所有重复的元素每个元素只留下一个。
2.思路:例如给定链表1->1->2->3->3->null,返回1->2->3->null。
首先要把头指针储存在p中,然后让head不断向后移,直到head的指针域指向空。如果head的指针域指向的数据域等于head的数据域,则说明head与它的下个节点重复,则head的指针域应指向head的下一个节点的指针域,否则head就不断向后移动,直到遍历整个链表。最后返回p的指针域,即最初存储的头指针,即可返回删除重复元素后的链表!
3.代码
4.感想:一定要对于节点的指针域,数据域还有和下一个节点的关系弄清楚!别糊涂!!!
2.思路:例如给定链表1->1->2->3->3->null,返回1->2->3->null。
首先要把头指针储存在p中,然后让head不断向后移,直到head的指针域指向空。如果head的指针域指向的数据域等于head的数据域,则说明head与它的下个节点重复,则head的指针域应指向head的下一个节点的指针域,否则head就不断向后移动,直到遍历整个链表。最后返回p的指针域,即最初存储的头指针,即可返回删除重复元素后的链表!
3.代码
/** * 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 ListNode *p=new ListNode(0); p->next=head; while(head!=NULL&&head->next!=NULL) { if(head->next->val==head->val) head->next=head->next->next; else head=head->next;} return p->next; } };
4.感想:一定要对于节点的指针域,数据域还有和下一个节点的关系弄清楚!别糊涂!!!
相关文章推荐
- leetcode(83)—— 删除已排序链表重复元素(Remove Duplicates from Sorted List)
- LintCode-删除排序链表中的重复元素
- <LeetCode> 题112:删除排序链表中的重复元素
- 删除排序链表中的重复元素
- 删除排序链表中的重复元素
- LintCode-剑指Offer-(112)删除排序链表中的重复元素
- 排序链表中删除重复元素II
- Lintcode112.删除排序链表中的重复元素
- LintCode 删除排序链表中的重复元素
- 删除排序链表中的重复元素-LintCode
- 容易 删除排序链表中的重复元素
- 题目:删除排序链表中的重复元素
- lintcode ----删除排序链表中的重复元素
- 删除排序链表中的重复元素
- 删除排序链表中的重复元素
- LintCode_112_删除排序链表中重复的元素
- 删除排序链表中的重复元素
- 删除已排序单链表中重复的元素
- 作业2.112:删除排序链表中的重复元素
- 删除排序链表中的重复元素