C# 예제 공부일기
-
List<T> 컬렉션C# 예제 공부일기 2020. 7. 14. 20:41
List 클래스는 C#프로그래밍에서 동적으로 생성되고 삭제되는 자료를 저장할 때 가장 번번하게 사용된다. 배열과 달리 크기가 가변이고, 제네릭 컬렉션이기 때문에 T에 어떤 자료형도 넣을 수 있는 리스트이다. List list = new List(); 위와 같이 선언이 가능하다. list 는 제네릭 컬렉션이므로 System.Collections.Gneneric 을 using문으로 포함시켜서 사용한다. 일반적으로 제네릭 컬렉션이 성능이 좋기 때문에 ArrayList 대신 List를 사용할 것이 권장된다. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;..
-
컬렉션, ArrayList의 사용C# 예제 공부일기 2020. 7. 14. 20:32
컬렉션이란 같은 형의 데이터를 모아서 처리하는 자료구조이다. 배열도 컬렉션의 하나이다. 컬렉션에는 "제네릭 컬렉션" 과 "제네릭이 아닌 컬렉션" 두가지 유형이 있다. .Net 프레임워크 에서 추가된 제네릭 컬렉션이 일반적으로 성능이 더 뛰어나다고 한다. (1) 컬렉션의 공통 기능 - 모든 컬렉션은 항목 추가, 제거 또는 찾기를 위한 방법을 제공한다. - 컬렉션을 열거하는 기능 : 모든 컬렉션은 Enumerable 또는 IEnumerable 인터페이스를 구현하므로 열거할 수 있고, foreach문을 사용할 수 있다. IEnumerable 를 구현하는 모든 컬렉션은 LINQ를 사용하여 쿼리할 수 있다. - 컬렉션의 내용을 배열에 복사하는 기능 : CopyTO 메소드를 사용하면 컬렉션을 배열에 복사할 수 있다..
-
큐를 이용한 프로그램C# 예제 공부일기 2020. 7. 14. 19:43
5개의 랜덤 숫자를 큐에 저장하고, 세 개의 숫자를 꺼내어 출력하는 프로그램을 작성한다. 큐에 값을 저장할 때는 EnQueue() 꺼낼 때는 DeQueue()를 사용한다. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace QueuePractice { class Node { internal T value; internal Node next; //다음 노드 가리키는 부분 public Node(T value) { this.value = value; this.next = null; } } class MyQueue { internal Nod..
-
Queue<T> 의 구현C# 예제 공부일기 2020. 7. 14. 19:36
선입선출 (Fast-in-first-out, FIFO) 형태의 자료를 다룰 때는 큐를 사용한다. 선착순으로 제일 먼저 들어온 자료가 제일 먼저 나가는 자료구조이다. 큐에 저장되는 값이 여러가지 일 수 있으므로 제네릭으로 정의하고, MyQueue 클래스에는 큐의 맨 앞과 맨 뒤를 가지는 first와 last필드를 갖는다. 각각의 자료는 Node 에 저장되고 MyQueue 클래스에서는 값을 추가하는 EnQueue와 DeQueue가 있다. 필드 또는 메소드 내용 first 큐의 첫번째 요소 가장 먼저들어온 데이터 last 큐의 가장 마지막 요소 가장 마지막에 들어온 데이터 EnQueue() 큐에 값을 추가한다. DeQueue() 큐에 값을 삭제한다. Print() 큐의 내용을 입력된 순서로 출력한다. usin..
-
스택을 이용한 프로그램C# 예제 공부일기 2020. 7. 14. 19:04
10개의 랜덤 숫자를 스택에 넣고 다시 꺼내어 출력하는 프로그램을 작성한다. 스택에 값을 저장할 때는 push(), 꺼낼 때는 pop()을 사용한다. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace StackPractice { class MyStack { const int maxSize = 10; private T[] arr = new T[maxSize]; private int top; public MyStack() { top = 0; } public void Push(T val) { if (top0) { --top; return..
-
Stack<T>의 구현C# 예제 공부일기 2020. 7. 14. 18:58
후입선출(Last-in-first-out, LIFO) 형태의 자료를 다룰 때는 스택을 사용한다. 제일 나중에 들어온 자료가 제일 먼저 나가는 자료구조이다. C# 컬렉션에는 Stack가 있어서 스택이 필요하면 제공되는 Stack를 쓰면 된다. 스택에 저장되는 값이 여러가지 일 수 있으므로 제네릭으로 정의한다. Mystack 클래스에는 10개의 자료를 저장하는 arr] 배열과 스택 포인터 top이 필드로 정의된다. 메소드는 생성자 메소드와 Push(), POP() 메소드가 있다. 필드 또는 메소드 내용 T arr[] 스택을 구성하는 배열 int top 스택포인터 MyStack() 생성자 top을 0으로 만든다 Push(T val) 스택에 val을 저장한다. T Pop() 스택에서 값을 하나 꺼낸다. usin..
-
LinkedList 클래스를 활용한 프로그램C# 예제 공부일기 2020. 7. 13. 20:44
앞에서 만든 LinkedList 클래스를 이용하여 삽입, 삭제, 출력하는 프로그램 using System; using System.ComponentModel; namespace CPractice { class Node { internal int data; internal Node next; public Node(int data) { this.data = data; next = null; } } class LinkedList { Node head; internal void InsertFront(int data) { Node node = new Node(data); node.next = head; head = node; } internal void InsertLast(int data) { Node node ..
-
LinkedList의 구현C# 예제 공부일기 2020. 7. 13. 20:27
List나 LinkedList 클래스는 C#에서 컬렉션으로 제공하고 있다. 하지만 자료구조를 직접 만드는 것이 프로그램 공부에 도움이 된다는 설명으로 책에서 시킨다. LinkedList에 대한 자세한 설명은 검색 LinkedList 클래스를 별도의 파일로 만들어 놓고 계속 쓸 예정이다. Node 클래스의 필드와 메소드 필드 또는 메소드 내용 int data 노드에 저장되는 값 Node next 리스트에서 디음에 연결되는 노드입니다. Node(int data) Node클래스의 생성자. data를 저장하는 Node를 생성 LinkedList 클래스의 필드와 메소드 필드 또는 메소드 내용 Node head 리스트의 첫 번째 노드 void InsertFront(int data) 리스트의 맨 앞에 data를 추가..