1、问题概述:给定一个已排序链表的头,删除重复元素,返回已排序的链表
2、示例
示例 1:
输入:head = [1,1,2] 输出:[1,2]示例 2:
输入:head = [1,1,2,3,3] 输出:[1,2,3]
3、分析
(1)先查看是否为空表
(2)定义2个指针,一个当前指针,一个指向替换指针
(3)循环链表
(4)判断当前数据值是否和下一个数据值相等
(5)如果相等:
temp=当前元素指向的下一个节点
cur的next = temp的next
使用free函数释放当前重复元素值
4、代码
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/
struct ListNode* deleteDuplicates(struct ListNode* head) {// 查看是否为空表if(!head){return head;}// 定义当前的指针和替换指针,一开始使当前指针指向头结点struct ListNode *cur,*temp;cur=head;// 替换数据while(cur->next!=NULL){// 处理重复元素if(cur->val==cur->next->val){temp=cur->next;cur->next=temp->next;free(temp);}else{cur=cur->next;}}return head;
}