본문 바로가기

프로그래밍/C 언어(정리)48

C언어] 정렬 [정렬] 1. 정렬(sort)이란? 컴퓨터 과학 및 프로그래밍에서 중요한 알고리즘 중 하나로. 데이터 요소들을 특정 순서로 재배열하는 것을 의미한다. 정렬은 데이터를 효과적으로 관리하고 검색, 비교 등의 연산을 빠르게 수행하기 위해 필수적 이다. 임의의 자료 집합을 일정한 기준에 따라 나열하는 것. 보통 자료의 크기순으로 나열하는데 작은 것을 먼저 나열하는 것을 오름차순(Ascending) 정렬이라고 하고 큰 것을 먼저 나열하는 것을 내림차순(Descending) 정렬이라고 한다. 이때 크기라는 기준은 자료의 형태에 따라 다른데 수치라면 값이 큰 수를 크다고 판단하며 문자열은 문자 코드의 순서로 대소를 판단 한다. 2. 정렬(sort)종류 버블 정렬(Bubble Sort) : 인접한 두 요소를 비교하여 .. 2024. 1. 2.
C언어] 검색-이진검색 [이진검색] 1. 이진 검색(Binary Search)이란? 이진 검색은 정렬된 배열에서 중간 값을 찾아 원하는 항목을 찾는 효율적인 알고리즘이다. 이진 검색은 구간의 중간값과 키값의 대소를 구분하여 테이블을 절반씩 나눠가며 비교하는 방법으로 한번 비교할 때마ㅏ다 테이블의 길이가 절반씩 줄어들기 때문에 검색 효율이 좋고 테이블이 웬만큼 커도 느려지지 않는다. HTML 삽입 미리보기할 수 없는 소스 2024. 1. 2.
C언어] 검색-선형검색 [선형검색] 1. 선형 검색(Linear Search) 이란? 선형 검색 또는 순차 검색(Sequential Search)는 모든 알고리즘 중에서 가장 기본적이면서 또한 상식적인 검색 방법이다. 테이블의 처음부터 순서대로 읽으면서 원하는 키와 비교하기를 검색에 성공하거나 아니면 테이블끝에 이를 때 까지 반복하는 것이다. HTML 삽입 미리보기할 수 없는 소스 2024. 1. 2.
C언어] 트리 [트리] 1. 트리 란? 트리(Tree)는 계층적인 구조를 나타내는 자료구조로, 노드(node)들이 간선(edge)으로 연결되어 있는 구조를 갖는다. 각 노드는 하나의 부모(parent) 노드와 여러 개의 자식(child) 노드를 가질 수 있다. 트리는 데이터를 효율적으로 조직화하고 검색하는 데 사용된다. 배열, 연결리스트, 스택, 큐 등은 모두 1차원 선형적인 구조를 가지는데 비해 트리는 2차원적인 구조를 가진다. 트리 용어 노드(Node): 트리의 기본 구성 요소로, 데이터를 저장하는 요소입니다. 각 노드는 부모와 자식 노드 간의 연결을 갖습니다. 루트 노드(Root Node): 트리의 시작점에 위치한 최상위 노드를 가리킵니다. 트리는 하나의 루트 노드만을 가집니다. 부모 노드(Parent Node).. 2024. 1. 2.
C언어] 큐 [큐] 1. 큐(Queue) 란? 큐(Queue)는 데이터를 선입선출(FIFO - First-In-First-Out)의 순서로 저장하는 자료구조이다. 큐는 주로 데이터를 임시로 저장하고 순서대로 처리해야 할 때 사용됩니다. C 언어에서 큐를 구현하기 위해서는 배열이나 연결 리스트 등을 활용할 수 있다. 큐는 주로 두 가지 주요 연산을 지원합니다: enqueue: 큐의 뒤쪽에 새로운 요소를 추가합니다. dequeue: 큐의 앞쪽에서 요소를 제거하고 반환합니다. HTML 삽입 미리보기할 수 없는 소스 정수형 큐를 배열을 이용하여 구현. 크기가 제한된 큐이기 때문에 원형 큐(circular queue)의 개념을 도입하여 배열의 끝에 도달하면 다시 처음으로 돌아가도록 구현 했다. 큐에 값을 추가하고(enqueu.. 2024. 1. 2.
C언어] 스택 [스택] 1. 스택 이란? 스택은 후입선출(Last-In-First-Out, LIFO)의 자료구조로서, 데이터를 쌓아 올리는 방식으로 동작한다. 스택은 주로 함수 호출, 임시 데이터 저장 등 다양한 용도로 사용된다. C 언어에서는 스택을 구현하고 다루는 데 필요한 몇 가지 개념과 함수들이 있다. 스택의 구현: 스택은 배열이나 연결 리스트를 사용하여 구현될 수 있다. 배열 기반 스택은 일반적으로 크기가 정적으로 정해지지만, 연결 리스트 기반 스택은 동적으로 크기가 조절될 수 있다. 스택의 주요 연산 Push: 스택에 데이터를 추가합니다. Pop: 스택에서 데이터를 제거합니다. Top (또는 Peek): 스택의 맨 위에 있는 데이터를 조회합니다. isEmpty: 스택이 비어 있는지 확인합니다. HTML 삽입.. 2024. 1. 1.
C언어] 이중 연결 리스트 [이중 연결 리스트] 1. 이중 연결 리스트 란? 각 노드가 이전 노드오 ㅏ다음 노드를 가리키는 링크를 가지고 있는 자료 구조. 각 노드는 데이터를 저장하는 부분과 두 개의 링크를 가지고 있다. 기본적으로 연결 리스트는 각 노드가 다음 노드만 가리키는 단일 연결 리스트와는 달리, 이중 연결 리스트는 각 노드가 이전 노드와 다음 노드를 모두 가리키기 때문에 양방향으로 탐색할 수 있다. | Prev | Data | Next | 구성으로 Prev: 이전 노드(앞쪽 노드)를 가리키는 포인터(링크) Data: 노드가 저장하는 데이터 Next: 다음 노드(뒤쪽 노드)를 가리키는 포인터(링크) HTML 삽입 미리보기할 수 없는 소스 2024. 1. 1.
C언어] 단순 연결 리스트 [단순 연결 리스트] 1. 단순 연결 리스트(Singly Linked List)란? 각 노드가 데이터와 다음 노드를 가리키는 포인터로 이루어진 자료구조. 각 노드는 리스트의 시작에서부터 끝까지 순차적으로 연결되어 있다. HTML 삽입 미리보기할 수 없는 소스 코드에서는 노드를 나타내는 Node 구조체를 정의하고, 리스트의 시작 노드를 가리키는 포인터를 사용했다. Node 구조체는 각 노드를 표현하고, insertNode 함수는 리스트의 시작에 새로운 노드를 추가. printList 함수는 리스트의 모든 노드를 출력하고, freeList 함수는 리스트의 메모리를 해제했다. 2023. 12. 30.
C언어] 동적 배열 [동적 배열] 1. 동적 배열? 배열의 연속된 메모리 공간이라는 특성 때문에 선언한 크기 이상의 요소를 추가할 수 없다. 실행 중에 필요한 만큼 크기를 늘렸다 줄였다 할 수 있는 배열을 동적 배열이라고 한다. 동적 배열을 만드는 기본 원리는 최초 적당한 길이로 초기 할당하되 삽입되는 정보가 할당된 메모리양을 초과할 때 배열의 크기를 더 늘리는 것이다. malloc, realloc, free 함수를 사용하여 동적 배열을 다룰 수 있다. HTML 삽입 미리보기할 수 없는 소스 malloc 함수를 사용하여 초기 동적 배열을 할당하고, realloc 함수를 사용하여 배열 크기를 조절한다. 마지막에는 free 함수를 사용하여 동적으로 할당된 메모리를 해제. realloc 함수를 사용할 때는 새로운 크기로 재할당할.. 2023. 12. 30.
728x90