본문 바로가기
반응형

C8

C, C++ Binary Tree(이진 트리) 만들기 (version 1) C와 C++로 Binary Tree 구현하기 C로 Binary Tree를 구현하고 C++로 바꿔보는 것 까지 해보겠다. Binary Tree라 하면, 각각의 노드가 최대 두 개의 자식 노드를 가지는 Tree 자료 구조로, 왼쪽 자식 노드와 오른쪽 자식 노드로 나뉜다. 트리에 7, 3, 2, 6, 9, 5, 8의 데이터를 넣는다고 해보자 Tree가 처음에 비어있을 경우, 노드를 하나 할당해주고 트리가 해당 노드를 가리키게 한다. 그 다음 3을 넣는다면 트리가 가리키는 노드들을 타고 내려가면서 노드들이 가지는 data 값과 새로 들어올 data값(=3)을 비교한다. 들어올 값이 비교하는 노드의 데이터 값보다 작다면 lchild 쪽으로, 크다면 rchild 쪽으로 간다. lchild나 rchild가 NULL을.. 2023. 4. 7.
C File read 정리 & 테스트 C에서 File 단위로 데이터를 입력받고 관리하기 FILE *를 사용하여 프로그램 내에서 text 파일을 읽어와 보고 몇 가지 문제 있는 방식과 개선된 방식, 파일에 담긴 데이터의 양을 dynamic하게 메모리에 할당받아 관리하는 방식 등을 알아보겠다. #include #include typedef struct _alcohol { char name[10]; int ABV; //alcohol by volumn } Alcohol; void print(Alcohol *al, int n) { int i; for (i = 0; i < n; i++) printf("%10s %5d\n", al[i].name, al[i].ABV); } main() { Alcohol al[100]; FILE *inFile; int li.. 2023. 4. 3.
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.
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 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.
반응형