📌  相关文章
📜  用于从未排序的链表中删除重复项的 C# 程序(1)

📅  最后修改于: 2023-12-03 15:40:53.203000             🧑  作者: Mango

用于从未排序的链表中删除重复项的 C# 程序

在开发中,经常会遇到需要从链表中删除重复项的情景,本篇文章将介绍一种用于从未排序的链表中删除重复项的 C# 程序。

程序代码
public class ListNode {
    public int val;
    public ListNode next;
    public ListNode(int val=0, ListNode next=null) {
        this.val = val;
        this.next = next;
    }
}

public class Solution {
    public ListNode DeleteDuplicates(ListNode head) {
        if(head == null || head.next == null) {
            return head;
        }
        ListNode pre = head;
        ListNode cur = head.next;
        while(cur != null) {
            if(cur.val == pre.val) {
                pre.next = cur.next;
            }
            else {
                pre = cur;
            }
            cur = cur.next;
        }
        return head;
    }
}
代码说明
  • ListNode 类用于表示链表中的节点。
  • Solution 类包含了删除重复项的方法 DeleteDuplicates,该方法接受一个链表的头节点作为参数,返回删除重复项后的链表头节点。
  • DeleteDuplicates 方法中,先判断传入的头节点是否为空或者只有一个节点,如果是则直接返回原有的头节点。
  • 使用两个指针 precur,分别指向当前节点的前一个节点和当前节点。
  • 循环遍历整个链表,判断如果 cur 的值与 pre 的值相等,则说明当前节点是重复节点,需要将 prenext 指针指向 cur 的下一个节点,实现删除重复节点的目的;如果值不相等,则继续往下遍历。
  • 最后返回原有的头节点即可。
总结

以上就是 C# 程序员可以用于从未排序的链表中删除重复项的代码。在实际开发中,可以根据实际需求进行修改和优化。