본문 바로가기

반응형

전체 글

(8)
[C] 원형 연결리스트 Circular Linked List 1. 원형 연결 리스트란?원형 연결 리스트(Circular Linked List)는 마지막 노드가 첫 번째 노드를 가리키는 구조를 가진 리스트예요.즉, 리스트의 끝이 다시 처음으로 연결되어 순환 구조를 이루고 있어요.원형 연결 리스트의 종류 1. 단일 원형 연결 리스트 (Singly Circular Linked List) → 마지막 노드의 next가 첫 번째 노드를 가리켜요. 2. 이중 원형 연결 리스트 (Doubly Circular Linked List) → next뿐만 아니라 prev도 원형으로 연결되어 있어요.원형 연결 리스트는 큐(Queue) 구현, 프로세스 스케줄링, 버퍼 관리 같은 곳에서 많이 사용돼요.⸻2. 단일 원형 연결 리스트(Singly Circular Linked List) 구조기본적..
[C] 이중 연결리스트 Double Linked List 1. 이중 연결 리스트란?이중 연결 리스트(Doubly Linked List)는 각 노드가 앞 노드와 뒤 노드를 모두 가리키는 포인터를 가지고 있는 자료구조예요.단일 연결 리스트(Singly Linked List)와 다르게 양방향으로 이동이 가능해서 활용도가 더 높아요.이제 직접 이중 연결 리스트를 C 언어로 구현해볼게요.⸻2. 이중 연결 리스트의 노드 구조이중 연결 리스트의 각 노드는 이전 노드(prev)와 다음 노드(next)를 가리키는 두 개의 포인터를 가지고 있어요.이를 struct로 정의하면 다음과 같아요.#include #include // 이중 연결 리스트 노드 구조typedef struct Node { int data; // 데이터 저장 struct Node* p..
[C] 연결리스트 Linked List 1. 연결 리스트란?연결 리스트(Linked List)는 포인터를 이용해서 데이터를 동적으로 연결하는 자료구조예요.배열(Array)과 달리 크기가 고정되지 않고, 필요할 때마다 메모리를 할당해서 사용할 수 있어요.배열은 인덱스를 이용해서 빠르게 접근할 수 있는 장점이 있지만, 크기가 고정적이고 삽입/삭제가 어려운 단점이 있어요.반면, 연결 리스트는 필요할 때마다 노드를 추가할 수 있어서 크기가 유동적이고 삽입/삭제가 쉬운 구조예요.⸻2. 단일 연결 리스트(Singly Linked List)단일 연결 리스트는 각 노드가 다음 노드를 가리키는 포인터를 가지고 있는 구조예요.즉, 한 방향으로만 이동할 수 있어요.노드(Node) 구조C 언어에서는 struct를 사용해서 연결 리스트의 노드를 만들어요.#inclu..
[C] 구조체 Structure #1. 구조체가 뭐야? 컴퓨터 프로그래밍에서 구조체("구조"의 줄임말)는 다양한 유형의 다양한 변수를 단일 단위로 그룹화할 수 있는 복합 데이터 유형이에요. 관련 정보를 보유할 수 있는 사용자 지정 데이터 구조를 만들 수 있어요. 구조체는 데이터 구조에 대한 청사진 또는 템플릿을 정의해요. 멤버 또는 필드로 알려진 개별 구성 요소의 이름과 데이터 유형을 지정해요. 구조체 내의 각 멤버는 정수, 실수, 문자 또는 기타 구조체와 같은 자체 데이터 유형을 가질 수 있어요. 구조체는 일반적으로 C, C++ 및 C#과 같은 프로그래밍 언어에서 사용됩니다. 아래는 C의 구조체 예제에요. #2. 예제 코드 및 설명 #include #include struct student // 구조체 student { char id..
[C] 스택 알고리즘 Stack Algorithm #1. 스택 이란? 스택은 요소에 액세스하는 후입선출(LIFO) 순서가 있는 요소 모음을 나타내는 추상 데이터 유형이에요. 가장 최근에 추가된 요소가 가장 먼저 제거된다는 의미인 "후입선출(last in, first out)" 원칙에 따라 작동해요. 맨 위에 있는 책에만 액세스할 수 있는 책 더미를 상상해 보세요. 책 더미에 새 책을 추가하려면 책을 맨 위에 놓고 책을 제거하려면 맨 위에 있는 책을 책 더미에서 꺼내요. 이는 스택 데이터 구조가 작동하는 방식과 유사해요. 스택에는 두 가지 주요 작업이 있어요. Push: 이 작업은 스택의 맨 위에 요소를 추가합니다. 새 요소가 맨 위 요소가 되고 기존 요소는 한 위치 아래로 푸시되어요. Pop: 이 작업은 스택에서 맨 위 요소를 제거합니다. 맨 위 요소 ..
[C] 이진 탐색 알고리즘 Binary Search Algorithm #1. 이진 탐색 알고리즘이란? 이진 탐색 알고리즘은 정렬된 목록이나 배열 내에서 특정 값을 찾기 위해 일반적으로 사용되는 탐색 알고리즘이에요. 분할정복(divide-and-conquer) 방식을 따르며 검색 공간을 반으로 반복 분할하여 목표 값을 효율적으로 찾아요. 이진 탐색 알고리즘의 작동 방식은 다음과 같아요. 정렬된 목록 또는 요소 배열로 시작해요. 검색 공간의 하한 및 상한을 정의해요. 처음에는 하한이 첫 번째 요소로 설정되고 상한이 마지막 요소로 설정되어요. 하한과 상한의 평균을 취하여 검색 공간의 중간 인덱스를 계산해요. 중간 인덱스에 있는 요소와 대상 값을 비교해요. 목표 값이 중간 요소보다 크면 검색 공간의 위쪽 절반에서 검색이 계속해요. 하한을 중간 인덱스보다 하나 더 많이 업데이트하고..
[C] 버블 정렬 알고리즘 Bubble Sorting Algorithm #1. 버블 정렬이란? 버블 정렬은 정렬할 요소 목록을 반복적으로 살펴보고 인접한 요소를 비교하고 순서가 잘못된 경우 교환하는 간단한 정렬 알고리즘이에요. 작은 요소가 목록의 맨 위로 점차 버블링되기 때문에 버블 정렬이라고 합니다. 버블 정렬은 평균 및 최악의 경우 시간 복잡도가 O(n^2)(여기서 n은 정렬할 요소 수)이기 때문에 특히 큰 목록의 경우 효율적인 정렬 알고리즘으로 간주되지 않아요. 그러나 이해하고 구현하기 쉽기 때문에 작거나 거의 정렬된 목록에 유용하게 쓰여요. #2. 버블 정렬의 예시 다음과 같은 정렬되지 않은 배열이 있다고 가정해요. 프로그램은 이 배열을 오름차순으로 정렬해야 해요. [7,2,0,1,5,6,4] 알고리즘은 배열의 첫 두 숫자(7,2)를 비교해요. 7 > 2 로 정렬되지..
[RE:VIEW] 말해보카 한달 체험기 #1. 말해보카? 그게 뭔데? 쉽게 배우는 영단어, 자연스러운 말하기. 그동안 몰랐던 영어의 재미, 말해보카 에서 매일 새롭게 느껴보세요. 말해보카 홈페이지 상단에서 찾을 수 있는 문구에요. 말 그대로, 쉽게 영어를 익히기 위한 어플이에요. 어휘, 리스닝, 문법과 같은 영어의 다양한 파트를 학습할 수 있어요. #2. 재밌어? 할 만해? 영단어, 게임하듯 쉽고 재밌게 말해보카가 가장 많이 밀어주는 말이에요. 게임을 하듯, 리그에 참여하여 다른 사람과 우위를 겨룰 수 있고, 이 것에서 오는 성취감이 엄청났어요. 저는 이제 거의 한 달째 하고 있는데, 남는 시간에 틈틈히 하면 재밌더라구요. 별 생각없이 하나보니까, 어느샌가 사파이어 리그에 올라가 있었어요. #3. 그래서 얼마나 도움 되는데? 나름 수능 영어 ..

반응형