CShap 已排序的链表中删除重复项 源代码
时间: 2024-05-08 10:15:43 浏览: 91
以下是C#中已排序的链表中删除重复项的源代码:
```
public ListNode DeleteDuplicates(ListNode head)
{
if (head == null || head.next == null)
return head;
ListNode current = head;
while (current != null && current.next != null)
{
if (current.val == current.next.val)
{
current.next = current.next.next;
}
else
{
current = current.next;
}
}
return head;
}
```
在这个方法中,我们首先检查链表是否为空或只有一个元素。如果是这样,我们返回原始链表。然后,我们定义一个当前节点变量,并将其设置为链表的头部。
我们使用 while 循环遍历链表,如果当前节点的值与下一个节点的值相同,则我们将当前节点的下一个节点指向下一个节点的下一个节点。否则,我们将当前节点移动到下一个节点。
最后,我们返回链表的头部。
相关问题
CShap 链表指针删除链表节点 源代码
以下是C#中删除链表节点的示例代码:
```csharp
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 DeleteNode(ListNode head, int val) {
// 如果要删除的节点是头节点,则直接返回头节点的下一个节点
if (head.val == val) {
return head.next;
}
// 找到要删除的节点的前一个节点
ListNode prev = head;
while (prev.next != null && prev.next.val != val) {
prev = prev.next;
}
// 如果找到了要删除的节点,则将前一个节点的next指向要删除的节点的下一个节点
if (prev.next != null) {
prev.next = prev.next.next;
}
return head;
}
}
```
在这个示例中,我们定义了一个`ListNode`类来表示链表节点,并在`Solution`类中定义了一个`DeleteNode`方法来删除链表中的节点。
在`DeleteNode`方法中,我们首先判断要删除的节点是否是头节点。如果是,我们直接返回头节点的下一个节点。
否则,我们遍历链表找到要删除的节点的前一个节点。如果找到了,我们将前一个节点的`next`指向要删除的节点的下一个节点,从而删除了要删除的节点。
最后,我们返回头节点。
CShap 删除链表 源代码
以下是C#代码,用于删除链表中的节点:
```csharp
public class ListNode {
public int val;
public ListNode next;
public ListNode(int x) { val = x; }
}
public class Solution {
public ListNode DeleteNode(ListNode head, int val) {
if (head == null) {
return null;
}
if (head.val == val) {
return head.next;
}
ListNode prev = head;
ListNode node = head.next;
while (node != null && node.val != val) {
prev = node;
node = node.next;
}
if (node != null) {
prev.next = node.next;
}
return head;
}
}
```
在这个解决方案中,我们首先检查头节点是否与要删除的值相等。如果是,我们将头节点的下一个节点作为新的头节点返回。否则,我们使用`prev`和`node`指针遍历链表,查找要删除的节点。一旦找到该节点,我们将`prev`节点的下一个节点设置为`node`节点的下一个节点,从而删除`node`节点。最后,我们返回头节点。
阅读全文