본문 바로가기
반응형

전체 글154

C LinkedList 만들기 (version 2 - Doubly LinkedList) C로 LinkedList 구현하기 Doubly LinkedList를 C로 구현해 보겠다. Doubly LinkedList는 Singly LinkedList의 단점을 보완해 만든 LinkedList로, Library에 있는 LinkedList는 Doubly LinkedList로써 구현되어 있다. Singly LinkedList의 단점으로는 크게 두가지가 있는데, add로 데이터를 추가할때, 맨 끝 노드에 값을 추가하기 위해 매번 traverse를 해줘야 한다는 점과 LinkedList를 traverse 하고자 할 때 정방향으로밖에 못한다는 점이 있다.(역순 traverse 불가) Doubly LinkedList나 Singly LinkedList나 전체적인 로직은 비슷하지만 몇가지 차이점이 있으니 한번 살펴.. 2023. 3. 30.
진수 변환 정리 & 진수 변환 트릭 프로그램 며칠전 연구실 동생 아누삭이 진수 변환하는 법을 물어봐서 알려준 기억이 있는데, 이를 좀 구체적으로 정리해보고 예전에 만든 진수 변환 트릭 프로그램도 소개해보도록 하겠다. 우리가 사용하는 수의 체계인 10진법(Decimal)은 컴퓨터 내에서 2진법(Binary), 8진법(Octal), 16진법(Hexadecimal) 등으로 사용된다. 우선, 위와 같은 진법들의 사용 이유에 대해 간단히 알아보자면, 컴퓨터는 1과 0의 두 가지 상태밖에 표현하지 못한다. 하지만 이런 단순한 연산 구조를 가지고 필요한 모든 정보를 함축하고 모든 연산을 해낼 수 있다. 10진수의 모든 수를 2진수로 표현할 수 있으며 이것은 전기 신호가 켜지고 꺼지는 두 가지 조합을 통해서 우리가 사용하는 모든 수를 표현할 수 있는 것이다. 즉.. 2023. 3. 30.
STL Sorting 실험 및 정리 C++ 다양한 타입의 collection들의 정렬은 어떤 식으로 되는건지 직접해보고, 몇 가지 내용을 정리해 볼 것이다. 실험 1) 배열에 무작위 int 값 넣고 sorting #include using namespace std; #include #include int compareInt(const void *x, const void *y) // 값 읽기만 { int *p = (int *)x; int *q = (int *)y; return *p - *q; } void main() { int x[10]; srand((int)time(NULL)); //seeding - time, process id for (int i = 0; i < 10; i++) { x[i] = rand() % 100; // pseudo.. 2023. 3. 29.
Default Argument (디폴트 인수) C++의 Default Argument에 대해서 알아보겠다. Default argument란 디폴트 인수나 부재 인수라고 하며, 기본값이 미리 정의되어 있는 인수를 의미한다. 함수를 호출할때, 인수를 전달하지 않으면, 해당 함수는 자동으로 미리 정의해둔 디폴트 인수 값을 사용하게 된다. 하지만 인수를 전달하여 함수를 호출하면 Default argument가 아닌 전달받은 argument로 함수를 호출할 수 있다. 즉, 미리 지정한 argument를 쓸거면 쓰고 말거면 말라는 식이다. Default argument를 사용해 보자. #include using namespace std; int add(int a, int b) { return a + b; } int add(int a, int b, int c) .. 2023. 3. 28.
Function Pointer (함수 포인터) C와 C++의 Function Pointer 제도에 대해서 무엇인지 알아보겠다. Function Pointer란, 함수 포인터 즉, 변수가 아닌 함수를 가리키는 포인터를 뜻한다. Function Pointer를 쓰는 이유로는 콜백 함수(Callback function = 어떤 이벤트에 의해 호출되어지는 함수, 다른 함수에 매개변수로 넘겨진 함수)를 구현할때 사용된다. 간단한 덧셈, 뺄셈, 곱셈, 나눗셈을 하고 싶을 때, 함수를 필요에 따라 그때 그때 불러오는 프로그램을 짜보며 자세히 보겠다. #include void add(int x, int y) { printf("%d + %d = %d\n", x, y, x+y); } void subtract(int x, int y) { printf("%d - %d =.. 2023. 3. 28.
C++ LinkedList 만들기 (version 3 - Iterator 구현 및 사용) 이전에 만든 LinkedList에 Iterator를 추가하여 traverse하는 용도로 써보겠다. 먼저, C++의 STL에 대해 짚고 넘어가겠다. STL이란 표준 템플릿 라이브러리라고 하며, ISO C++위원회에서 specification을 정한다. ISO에서 특정 클래스의 명세를 결정해 발표하면 C++ 컴파일러를 만드는 vendor들이 알아서 template들을 구현한다. 이것은 알고리즘, 컨테이너, 함수자, 반복자의 네가지 구성 요소를 제공한다. 프로그래머가 자료구조와 알고리즘의 정확한 내부 구조를 모르더라도 사용할 수 있게 구현해놓았다. 간단한 STL 사용 예제를 보겠다. #include using namespace std; #include #include #include template ostre.. 2023. 3. 27.
반응형