• NoName Blog
  • 搜索
导航
  • 首页
  • 统计
  • 关于
  • 友链
  • 朋友圈
  • 写作
分类
标签
文章
数据结构
数据结构(一)链表

© 2026 NoName Blog. All rights reserved.

开往GitHub RepoRSSSitemap萌ICP备20260063号
数据结构(一)链表 封面
2024年3月28日·2 min read

数据结构(一)链表

链表基础与删除节点问题的 C# 实现。

分类: 数据结构#开发

链表是一种数据结构,一般来说是这么定义的:

C#
public class LinkedList(int value)
{
    public LinkedList? Next { get; set; }
    public int Value { get; set; } = value;
}

这种是单链表,还可以搞成双链表:

C#
public class LinkedList(int value)
{
    public LinkedList? Next { get; set; }
    public LinkedList? Pre { get; set; }
    public int Value { get; set; } = value;
}

这种数据结构写起来蛮简单。先来点题:

删除链表

题意:删除链表中等于给定值 val 的所有节点。 示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5] 示例 2: 输入:head = [], val = 1 输出:[] 示例 3: 输入:head = [7,7,7,7], val = 7 输出:[] 这里的话我们使用单链表。当value等于相应数的时候,把这个的实例忽略就行,也就是:a.Next = a.Next.Next 但是这里有个问题,就是我们无法判断a是不是这种的。而且因为C#引用类型的原因,我们要想输出头就只能使用最开始给的那个。所有我们首先得先变一下头,把head做个判断。 因此代码就长这样的了:

C#
    public static void Remove(LinkedList? head, int val)
    {
        while (head != null && head.Value == val)
        {
            head = head.Next;
        }
 
        var a = head;
 
        while (a != null)
        {
            if (a.Next?.Value == val)
            {
                a.Next = a.Next.Next;
            }
 
            a = a.Next;
        }
 
        Console.WriteLine(head);
    }
许可协议
本文采用 署名-非商业性使用-相同方式共享 4.0 国际 许可协议,转载请注明出处。

上一篇

MySQL? PostgreSQL!

下一篇

数据结构(二)数组

评论

目录

  • 删除链表