반응형

C_C++ 325

(C언어) Caesar (시저, 카이사르) 암호화 복호화

C언어를 이용한 다양한 암호화 방법이 있습니다. 여기서는 일반 텍스트의 각 문자가 고정된 위치만큼 이동되는 간단한 Caesar 암호화 방법을 이용해서 입력 받은 문자열을 암호화하고 다시 복호화 하는 C언어 코드를 설명합니다. shift로 사용되는 변수는 문자열이 이동되는 크기를 나타내는 값으로 임의의 값으로 수정할 수 있습니다. 영문자만 shift 연산을 수행합니다. #define _CRT_SECURE_NO_WARNINGS #include void encrypt(char* text, int shift) { for (int i = 0; text[i] != '\0'; ++i) { if (text[i] >= 'a' && text[i] = 'A' && text[i] = 'a' && text[i] = 'A' &&..

C_C++ 2023.11.19

(C언어) 이진 탐색 트리(BTS, Binary Search Tree)에서 노드의 삽입 삭제 검색

C언어를 이용해서 이진 탐색 트리(BTS, Binary Search Tree)를 구현한 코드입니다. 노드의 생성, 삽입, 삭제 그리고 중위 순회로 탐색하는 코드를 포함하고 있습니다. 이진 트리의 노드를 나타내는 구조체입니다. struct Node { int data; struct Node* left; struct Node* right; }; 노드를 생성하는 함수입니다. struct Node* createNode(int data) { struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); newNode->data = data; newNode->left = NULL; newNode->right = NULL; return newNode; } 노드의..

C_C++ 2023.11.08

(C언어) 연결 리스트(linked list)를 이용한 스택(stack) 구현하기

C 언어에서 연결 리스트를 이용해서 스택을 표현해 봅니다. 스택은 후입선출(LIFO) 데이터 구조로 마지막에 입력된 자료가 가장 먼저 제거되는 자료구입니다. 여기서는 스택에 요소를 삽입(push)하고 제거(pop)하는 기능이 포함되어 있습니다. 연결 리스트를 사용하면 스택의 크기가 동적으로 변경될 수 있습니다. 먼저, 스택의 각 노드를 나타내는 구조체를 정의합니다. #include #include // 스택의 노드를 나타내는 구조체 struct Node { int data; struct Node* next; }; 다음으로, 스택을 나타내는 구조체를 정의합니다. struct Stack { struct Node* top; }; 스택의 요소를 생성하는 함수를 정의합니다. struct Stack* createS..

C_C++ 2023.11.04

(C언어) 연결 리스트로 이진 트리 구현

C 언어를 이용하여 트리(Tree)를 구현하는 방법은 여러 가지가 있습니다. 트리 구조는 많은 종류가 있으며, 여기서는 이진 트리(Binary Tree)를 구현하는 예제입니다. 이진 트리는 각 노드가 최대 두 개의 자식 노드를 가지는 트리입니다. 먼저, 이진 트리의 간단한 구조를 정의해 보겠습니다. 각 노드는 데이터와 두 개의 포인터(왼쪽 자식 노드 및 오른쪽 자식 노드를 가리키는 포인터)로 구성됩니다. 아래는 이진 트리의 구조를 정의한 C 코드입니다. #include #include // 이진 트리 노드 구조체 정의 struct TreeNode { int data; struct TreeNode* left; struct TreeNode* right; }; // 새로운 노드를 생성하는 함수 struct T..

C_C++ 2023.11.01

(C언어) 이중 연결리스트( Doubly Linked List): 노드 추가 삭제

이중 연결리스트(Doubly Linked List)를 구현한 C언어 소스입니다. 이중 연결리스트는 각 노드가 다음 노드와 이전 노드를 가리키는 연결된 데이터 구조입니다. 아래의 소스에는 다음과 같은 기능이 구현되어 있습니다. 노드 생성 : createNode() 노드 초기화: initializeList() 노드를 리스트의 끝에 추가: append() 노드를 리스트의 맨 처음에 추가: prepend() 노드 삭제: deleteNode() - 헤드 노드 삭제, 특정 노드 삭제 리스트 출력: printList() 이중 연결리스트의 구조체 정의는 다음과 같이 정의되어 있습니다. // 노드 구조체 정의 struct Node { int data; struct Node* next; struct Node* prev; ..

C_C++ 2023.10.28

(C언어) 자료구조: 연결리스트(linked list)로 표현한 큐(queue)

C 언어로 연결 리스트(linked list)를 활용하여 큐(Queue)를 표현했습니다. 큐는 데이터를 FIFO(First-In-First-Out) 방식으로 처리하는 자료 구조로 먼저 입력된 자료가 먼저 출력되는 자료 구조입니다. 먼저, 연결 리스트의 노드를 정의합니다. 각 노드는 데이터와 다음 노드를 가리키는 포인터로 구성됩니다. // 큐 노드 구조체 정의 typedef struct QueueNode { int data; struct QueueNode* next; } QueueNode; // 큐 구조체 정의 typedef struct Queue { QueueNode* front; // 큐의 맨 앞 노드 QueueNode* rear; // 큐의 맨 뒤 노드 } Queue; void initializeQu..

C_C++ 2023.10.26

(C언어) 자료구조: 배열로 큐(Queue) 표현하기, 장점 단점

큐는 데이터 구조 중 하나로, FIFO(First In First Out) - 데이터를 먼저 집어넣은 순서대로 꺼낼 수 있는 - 자료구조입니다. 이 예제에서는 배열(Array)을 사용하여 큐(queue)를 구현하는 C언어 코드입니다. 테스트를 위해서 큐의 크기를 5로 설정했습니다. #include #include #define MAX_QUEUE_SIZE 5 struct Queue { int items[MAX_QUEUE_SIZE]; int front; int rear; }; struct Queue* createQueue() { struct Queue* queue = (struct Queue*)malloc(sizeof(struct Queue)); queue->front = -1; queue->rear = -..

C_C++ 2023.10.25

(C언어) 원형 연결리스트 circular linked list

새 노드를 뒤쪽에 삽입하는 원형 연결리스트의 C언어 코드입니다. #include #include // 원형 연결 리스트의 노드를 나타내는 구조체 struct Node { int data; struct Node* next; }; // 새 노드 생성 함수 struct Node* createNode(int data) { struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); newNode->data = data; newNode->next = NULL; return newNode; } // 뒤쪽에 노드 추가 함수 struct Node* insertAtEnd(struct Node* head, int data) { struct Node* newNode ..

C_C++ 2023.10.13

(C언어) 지정된 폴더의 파일 목록 출력하기

다음 코드는 윈도우에서 지정한 폴더(디렉토리)의 파일과 하위 폴더의 파일 목록을 출력하는 C언어 소스입니다. #include #include #include #include #include #pragma warning ( disable : 4996 ) #define DIRECTORY 1 #define FILE 0 struct _finddata_t fd; int isDirectory() { if (fd.attrib & _A_SUBDIR) return DIRECTORY; else return FILE; } void FileSearch(char path[]) { intptr_t handle; int check = 0; char path2[_MAX_PATH]; strcpy(path2, path); strcat(..

C_C++ 2023.07.10
반응형