0329 Single Linked List 복습

2021. 3. 30. 10:34C#/자료구조

 

public class Node 
    {
        public int data;
        public Node next;
        public Node(int data) 
        {
            this.data = data;
        }
    }
    public class SingleLinkedList
    {
        private Node head;
        public SingleLinkedList() 
        { }
        public void Add(Node node) 
        {
            if (this.head == null)
            {
                //헤드가 비어있을 경우 새 노드를 헤드로 설정
                this.head = node;
            }
            else 
            {
                //헤드가 있다면
                Node current = this.head;
                while (current != null && current.next != null) 
                {
                    //노드 값이 널이 아니고, 그 다음 값고 있다면 그 다음다음 노드에 데이터 저장
                    current = current.next;
                }
                current.next = node;
            }
        }
        public int Count() 
        {
            int count = 0;
            Node current = this.head;
            while (current != null) 
            {
                count++;
                current = current.next;
            }
            return count;
        }
    }
public class App
    {
        public App() 
        {
            SingleLinkedList list = new SingleLinkedList();
            list.Add(new Node(1));
            list.Add(new Node(2));
            Console.WriteLine(list.Count());
            for (int i = 0; i < list.Count(); i++) 
            {
                Console.WriteLine(list.Count());
            }
        }
    }

 

public void AddAfter(Node current, Node newNode) 
        {
            if (this.head == null || current == null || newNode == null) 
            {
                //헤드가 없고, 현재 노드가 값이 없고, 새로운 노드도 값이 없으면 오류 호출
                throw new InvalidOperationException();
            }
            newNode.next = current.next;
            current.next=newNode;
        }
public class App
    {
        public App() 
        {
            SingleLinkedList list = new SingleLinkedList();
            var head = new Node(1);
            list.Add(head);
            var current = new Node(2);
            list.Add(current);
            list.AddAfter(head, new Node(3));
            Console.WriteLine(list.Count());
            Console.WriteLine("*****요소 출력*****");
            for (int i=0; i < list.Count(); i++) 
            {
                Console.WriteLine(list.Count());
            }
        }
    }

 

public void Print() 
        {
            if (this.head == null) 
            {
                throw new InvalidOperationException();
            }
            Node current = head;
            while (current != null) 
            {
                Console.WriteLine(current.data);
                current = current.next;
            }
        }

 

 

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

0331 이진트리  (0) 2021.03.31
0330 Tree 트리  (0) 2021.03.30
0330 Stack  (0) 2021.03.30
0330 Queue  (0) 2021.03.30
0329 자료구조 (배열과 링크드 리스트)  (0) 2021.03.29