📅  最后修改于: 2023-12-03 15:40:53.203000             🧑  作者: Mango
在开发中,经常会遇到需要从链表中删除重复项的情景,本篇文章将介绍一种用于从未排序的链表中删除重复项的 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
方法中,先判断传入的头节点是否为空或者只有一个节点,如果是则直接返回原有的头节点。pre
和 cur
,分别指向当前节点的前一个节点和当前节点。cur
的值与 pre
的值相等,则说明当前节点是重复节点,需要将 pre
的 next
指针指向 cur
的下一个节点,实现删除重复节点的目的;如果值不相等,则继续往下遍历。以上就是 C# 程序员可以用于从未排序的链表中删除重复项的代码。在实际开发中,可以根据实际需求进行修改和优化。