博客园不常在线

有问题联系微信

微信号

微信公众号

C#数据结构与算法系列(五):常见单链表笔试

1.求单链表中有效节点个数

复制代码
        public static int GetLength(HeroNode headNode)
        {
            int length = 0;

            var cur = headNode.Next;

            while (true)
            {
                if (cur == null) break;

                length++;

                cur = cur.Next;
            }
            return length;
        }
复制代码

2.查找单链表中倒数第N个节点

复制代码
  public static HeroNode GetLastIndexNode(HeroNode headNode, int index)
        {
            var cur = headNode.Next;

            //if (cur == null) return null;

            int count = 0;

            while (true)
            {
                if (cur == null) break;

                count++;

                cur = cur.Next;
            }

            if (index <= 0 || index > count)
            {
                return null;
            }

            cur = headNode.Next;

            for (int i = 0; i < count - index; i++)
            {
                cur = cur.Next;
            }

            return cur;
        }
复制代码

3.单链表反转

复制代码
   public static  HeroNode  ReversetList(HeroNode headNode)
        {

            var cur = headNode.Next;

            if (cur == null) return null;

            var reversetNode = new HeroNode(0,"","");

            HeroNode next = null;

            while (cur!=null)
            {
                next = cur.Next;      
                
                cur.Next = reversetNode.Next;

                reversetNode.Next = cur;

                cur = next;
                
            }
return reversetNode; }
复制代码

4.从尾到头打印单链表

复制代码
        public static void ReversetPrint(HeroNode head)
        {
            var cur = head.Next;

            if (cur == null) return;

            Stack<HeroNode> stack = new Stack<HeroNode>();

            while (cur!=null)
            {
                stack.Push(cur);

                cur = cur.Next;
            }

            while (stack.Count>0)
            {
                var temp = stack.Pop();

                Console.WriteLine($"id={temp.Id},name={temp.Name},nickName={temp.NickName}");
            }
        }
复制代码

 

 

posted @   Code技术分享  阅读(288)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示