0329 Single Linked List 복습
2021. 3. 30. 10:34ㆍC#/자료구조
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 |