2025/04/15 4

[자료구조] 이진트리(Binary Tree) 작은 수 출력(printSmaller Values) 구현(C언어)

문제 설명이 문제에서는 이진 트리의 루트 노드와 정수 m이 주어졌을 때, 트리 내에서 m보다 작은 값을 가진 모든 노드를 출력하는 함수를 작성해야 합니다.문제 요구사항이진 트리의 모든 노드를 순회하여, 각 노드의 값이 m보다 작은 경우 해당 값을 출력합니다.문제 코드 설명1. 구조체 정의1.1 BTNode 구조체typedef struct _btnode { int item; // 노드가 담고 있는 정수 값 struct _btnode *left; // 왼쪽 자식 노드의 주소 struct _btnode *right; // 오른쪽 자식 노드의 주소} BTNode;item: 노드에 저장된 정수 값left: 왼쪽 서브트리(자식 노드)를 가리키는 포인터right: 오른쪽..

자료구조 2025.04.15

[자료구조] 이진트리(Binary Tree) 홀수 합(sumOfOddNodes) 구현(C언어)

문제 설명이번 포스트에서는 이진 트리(Binary Tree)에 저장된 정수들 중 홀수 값만을 골라 합산하는 문제를 해결해보겠습니다.문제에서는 정수 값을 저장하는 이진 트리의 루트 노드를 입력받아, 트리 내에 존재하는 모든 홀수 노드의 값을 더한 합계를 반환하는 재귀 함수를 구현합니다.문제 요구사항예외 처리:만약 입력된 이진 트리의 루트 노드(root)가 NULL이면, 함수는 예외 처리 후 0을 반환합니다.노드 합산 방식:재귀 함수 호출을 통해 이진 트리의 모든 노드를 탐색합니다.현재 노드의 값이 홀수이면 그 값을 결과 변수 sum에 더합니다.현재 노드의 왼쪽 서브트리와 오른쪽 서브트리를 재귀적으로 탐색하여, 반환된 합계를 현재 노드의 값과 함께 누적합니다.문제 코드 설명1. 구조체 정의1.1 BTNode..

[C 언어] 동적 메모리 할당(malloc, calloc, realloc)를 모르는 당신! 정~~~말 불쌍해!

C 언어에서 동적 메모리 할당은 프로그램 실행 중에 필요한 만큼의 메모리를 할당받아 사용하는 중요한 기능입니다. 동적 메모리 할당을 통해 배열과 같은 데이터 구조의 크기를 실행 시간에 결정할 수 있으며, 메모리의 효율적인 사용이 가능해집니다. 이때 할당되는 메모리는 Heap 영역에 위치하며, 대표적으로 사용하는 함수는 malloc, calloc, realloc입니다.1. 메모리 구조와 Heap 영역C 프로그램은 일반적으로 다음과 같은 메모리 영역으로 구성됨코드 영역(Code Segment): 실행할 명령어들이 저장됨데이터 영역(Data Segment): 전역 변수 및 static 변수 등이 저장됨BSS 영역: 초기화되지 않은 전역 변수 및 static 변수들이 저장됨Stack 영역: 함수 호출 시 생성되..

[CSAPP] 3-8 배열의 할당과 접근

컴퓨터 시스템에서 배열은 단순히 여러 데이터를 나열하는 자료구조를 넘어, 메모리 할당과 주소 계산의 기본 원리를 보여줍니다. 이번 포스팅에서는 C 언어에서 배열이 메모리에 어떻게 배치되고 접근되는지, 포인터 산술과 어셈블리 수준의 주소 계산까지 상세히 분석합니다.1. 배열의 기본 원리1.1. 연속적 메모리 할당 C 언어에서 배열 선언은 연속된 메모리 블록을 할당받습니다.T A[N];선언 시, 배열의 시작 주소를 xA라 하고 요소의 크기를 L이라 하면, 각 요소는 다음 주소에 저장됩니다.A[0]: xAA[1]: xA + LA[2]: xA + 2L…A[i]: xA + L * i이와 같이, *A[i] ≡ (A + i)라는 표현은 “기준 주소 + i×요소 크기”를 역참조하여 값을 얻는 방식임을 보여줍니다.1.2..

CSAPP/3장 2025.04.15