본문 바로가기

자료구조

재귀함수 - Linked List에서 head부터 시작해서 마지막노드 반환

using System;

namespace HelloWorld
{
    class App
    {
        Node head;

        //생성자
        public App()
        {
            Node node = new Node(3);
            AddNode(node);
            node = new Node(5);
            AddNode(node);
            node = new Node(7);
            AddNode(node);
            node = new Node(11);
            AddNode(node);
            //Console.WriteLine("노드 개수: {0}", GetCount());

            node = GetLastNode(head);
            Console.WriteLine("last node.data: {0}", node.data);
        }
        
        //Linked List에서 head부터 시작해서 마지막노드를 반환하는 메서드를 재귀적으로 구현하세요 
        Node GetLastNode(Node node)
        {
            Node temp = node;
            if (temp == null || temp.next == null)
            {
                return temp;
            }
            else
            {
                temp = temp.next;
                return GetLastNode(temp);
            }
        }

        //노드추가
        void AddNode(Node node)
        {
            //head가 없다면
            if (head == null)
            {
                head = node;
            }
            //있다면
            else
            {
                Node temp = head;
                while (true)
                {
                    if (temp.next == null)
                    {
                        temp.next = node;
                        break;
                    }
                    else
                    {
                        temp = temp.next;
                    }
                }
            }
        }

        int GetCount()
        {
            //head부터 시작해서 끝까지 개수
            int count = 0;
            if (head == null)
            {
                return count;
            }
            else
            {
                Node temp = head;
                count = 1;
                while (true)
                {
                    if (temp.next == null)
                    {
                        return count;
                    }
                    else
                    {
                        temp = temp.next;
                        count++;
                    }
                }
            }
        }
    }
}

'자료구조' 카테고리의 다른 글

재귀적으로 스택의 모든 데이터를 출력  (0) 2021.12.28
스택 (stack) Push  (0) 2021.12.28
재귀함수 - 팩토리얼  (0) 2021.12.28
재귀함수  (0) 2021.12.28
노드 찾아서 앞쪽에 붙이기  (0) 2021.12.28