본문 바로가기
반응형

분류 전체보기155

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.
Bitwise operation(비트 연산)과 BitMask(비트마스크) 정리 Bitwise operation과 Java의 BigInteger에 대하여 알아보고 다른 부가적인 것들에 대해서도 정리해 보겠다. Bitwise operation(비트 연산)이란 한 개 또는 두 개의 이진수에 대해 비트 단위로 적용되는 연산이다. 비트 연산의 종류로는 AND 연산, OR 연산, XOR 연산, NOT 연산 그리고 SHIFT 연산들이 있다. ● AND 연산 - 두 값의 각 자릿수를 비교해, 두 값 모두에 1이 있을 때에만 1을, 나머지 경우에는 0을 계산하는 연산이다. 비트 A(= 0101)와 B(= 1100)가 있을 때, "A & B" 로 표현하며 0100의 결과를 만들어낸다. ● OR 연산 - 두 값의 각 자릿수를 비교해, 둘 중 하나라도 1이 있다면 1을, 아니면 0을 계산하는 연산이다... 2023. 4. 5.
C++ 문자열에 관한 정리 & String 직접 구현하기 C++ 문자열의 저장 방식과 동작 메커니즘 등을 알아보고 또 라이브러리의 String 클래스에 해당하는 JString을 직접 만들어 보도록 하겠다. 문자열을 다루기 전에 컴퓨터 메모리 영역의 구조에 대해서 알아야 할 필요가 있다. 운영체제의 메인 메모리 영역은 Code 영역, Data 영역, Heap 영역, Stack 영역 이 네가지로 분류된다. ● Code 영역 - 코드 영역은 텍스트 영역이라고도 하며 "코드를 실행하기 위해 저장되어 있는 영역"이다. 프로그램을 실행시키기 위해 구성되는 것들이 저장되는 영역이며, 제어문 / 상수 / 함수 등이 이 영역에 저장된다. ● Data 영역 - 작성한 소스코드에서 사용한 전역변수, 정적변수 등이 저장되는 공간이다. 이것들은 보통 프로그램 실행 전에 선언되어 프로.. 2023. 4. 4.
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# 2차원 배열 & 가변 배열 정리 C#으로 2차원 배열을 만들어 쓰는 법을 알아보겠다. C#에서는 다차원 배열을 만들때 특이한 syntax를 쓰는데, 바로 배열 [] 사이에다 ','를 넣는것이다. 2차원배열 선언시, 필요한 row와 col 값만큼을 ','로 구분지어서 명시해주면 그 사이즈 만큼의 2차원 배열이 할당된다. 코드를 보면서 직접 사용해 보겠다. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CSArray2Test { class Program { static int getSum(int[,] p) { int sum = 0; for (int i = 0; i.. 2023. 4. 2.
C언어 1차원 배열과 2차원 배열 간단한 정리와 테스트 C Language 1ㆍ2 차원 배열의 사용과 특성에 대해 알아보겠다. 먼저 C의 1차원 배열 사용 관습이다. #include #include int getSum(int p[], int n) { int sum = 0; int i; for (i = 0; i < n; i++) sum += p[i]; return sum; } void print(int p[], int n) { int sum = 0; int i; for (i = 0; i < n; i++) printf("%d ", p[i]); printf("\n"); } main() { int x[100]; int i; int sum = 0; int n; printf("Type size of array : "); scanf("%d", &n); for (i = 0.. 2023. 4. 1.
반응형