【打卡】——【LeetCode学习计划】《数据结构入门-C++》第8天 链表

目录

原文链接:【LeetCode学习计划】《数据结构入门-C++》第8天 链表_Wang_Xin_Ling的博客-CSDN博客

83. 删除排序链表中的重复元素LeetCode: 83. 删除排序链表中的重复元素

方法1:迭代

 动画演示

具体代码 

206. 反转链表LeetCode: 206. 反转链表


原文链接:【LeetCode学习计划】《数据结构入门-C++》第8天 链表_Wang_Xin_Ling的博客-CSDN博客

83. 删除排序链表中的重复元素
LeetCode: 83. 删除排序链表中的重复元素

题目:

存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。
返回同样按升序排列的结果链表。

 

方法1:迭代

由于题目中给出的链表是排好序的,因此我们不用记录每个结点的值是否出现过。遍历链表时,如果下一个链表和当前的链表具有相等的值(通过键值对),就先停留在原地并删除下一个结点;如果不等就往后走一步。

 动画演示

 

具体代码 

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        ListNode *p = head;
        while (p &&p->next)
        {
            if(p->val == p->next->val)
            {
                ListNode *dead = p ->next;
                p->next = p ->next->next;
                delete dead;

            }
            else
            {
                p = p->next;
            }
        }
        return head;
    }
};

 

206. 反转链表
LeetCode: 206. 反转链表

详细见昨天的打卡

【打卡】——【LeetCode学习计划】《数据结构入门-C++》第7天 链表_heart_6662的博客-CSDN博客


 

Guess you like

Origin blog.csdn.net/qq_62932195/article/details/121944056