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

alicelmx 2020-06-16

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}");
            }
        }

 

相关推荐