본문 바로가기
반응형

전체 글154

C# LinkedList 만들기 (Generic type) C#으로 LinkedList 만들기 리스트의 type을 Generic화 시킨 LinkedList를 만들어 보도록 하겠다. 이전 글에서 C++로 LinkedList를 template화 하여 어느 타입의 데이터든 관리할 수 있도록 만들었는데 아래는 참고 링크이다. https://suldenlion.tistory.com/90 C++의 템플릿과 C#의 제네릭은 내용상 결이 같다. 다만 C++와 C#, Java의 템플릿/제네릭은 약간의 차이가 있는데 조금 정리해 보겠다. 완전하게 이해하지 못한 부분도 있고 웹 서칭을 참고하여 정리해 보는 것이므로 내용에 오류가 있을 수 있다. C++은 한번 컴파일이 되면 그 뒤로는 동일한 기계어 코드만 실행하게 된다 (컴파일 총 1번). 하지만 C# 같은 경우는 먼저 컴파일을 한.. 2023. 3. 26.
C++ LinkedList 만들기 (version 2 - LinkedList Template화 하기) C++의 template 제도와 사용에 대해서 알아보고 또 이전 버전의 LinkedList에 직접 적용시켜 구현해보도록 하겠다. C++의 template은 Java의 Generic과 같은 것으로 이해하면 된다. 우리가 어떤 Collection 객체를 갖다 쓰던지 실제 사용에 있어서 한 가지 변수 타입에 국한되지 않게 쓸 수 있어야 한다. 이전 버전의 LinkedList는 자료형의 리턴 타입이 전부 int형이었다. 하지만 Library에서 갖다쓰는 자료 구조들은 int 뿐만이 아닌 String, bool ... 혹은 객체가 됐든 어떠한 데이터도 담을 수 있다. 그래서 저번 버전의 LinkedList를 template화 시켜 다양한 자료형을 다룰 수 있게 해보겠다. int만 담을 수 있는 이전 버전의 Lin.. 2023. 3. 25.
C++ LinkedList 만들기 (version 1) C에 이어 C++로 LinkedList를 구현해 보도록 하겠다. LinkedList의 거의 모든 메서드의 동작 메커니즘은 아래 글에서 소개가 되어있다. https://suldenlion.tistory.com/88 약간의 추가된 요소나 메서드들, 그리고 C++로 파일을 나눠서 작성한 코드 방식 등을 포스팅 해보겠다. 바로 메인 함수 코드를 보면서 어떤 함수들을 사용했는지 보겠다. #include using namespace std; #include "LinkedList.h" void main() { LinkedList list1; LinkedList *list2 = new LinkedList(); list1.addFirst(10); list1.addFirst(20); list1.add(50); list1... 2023. 3. 24.
C LinkedList 만들기 (version 1) C로 LinkedList를 직접 구현해 보도록 하겠다. LinkedList는 배열 자료구조의 size 고정 문제를 해결하고, 데이터 삽입/삭제의 문제도 해결되었다는 특징이 있다. LinkedList의 대표 메서드로는 add()와 remove(), 또 특정 인덱스에 값을 갖다넣는 addAt()과 removeAt() 등이 될 것이다. Oracle의 API에서 LinkedList가 있는 부분을 참고하여 주요 메서드들을 구현해 볼 것이다. 만들어 볼 LinkedList는 Singly LinkedList로서 Data와 다음 노드를 가리킬 포인터 노드로 이루어진 Node 구조체와 맨 첫번째 Node를 가리키는 header와 총 노드수를 나타낼 count로 이루어진 LinkedList 구조체로 구성된다. 전체적인 주.. 2023. 3. 23.
C Union 알아보기 및 사용 C의 Union에 대하여 알아보고 사용하도록 해보겠다. Union은 구조체와 생김새가 거의 같다. 하지만 큰 차이점으로는 Union 내의 모든 Data member 들이 하나의 메모리 기억장소를 쓴다는 점이 있다. Union은 다양한 type의 메시지를 주고받는 통신 쪽과 같이 여러 타입의 Data member 들을 사용하거나 할 때 쓰인다. Union은 Data member 중 가장 크기가 큰 type의 변수 크기로 메모리를 할당한다. 예를 들어, Union에 char, int, double의 세가지 타입의 데이터가 들어있다면 각각 1byte, 4byte, 8byte이다. 그러면 그 중 가장 큰 double의 크기 값 8byte로 char과 int 영역의 크기도 할당된다. 대충 이런 느낌으로 기억장소를.. 2023. 3. 21.
C++ Stack 만들기 (version.4 - Operator overloading이란?) ArrayList로 구현한 스택을 통해 Operator overloading 및 몇 가지 문법을 정리해볼 것이다. C++에서는 자바의 출력문 System.out.println() 혹은 C의 printf()와 달리 ostream의 ' 2023. 3. 20.
반응형