반응형

C언어 450

[C언어 자료구조] 2. 배열(Array)

[C언어 자료구조] 2. 배열(Array) C언어에서 제공하는 형식 배열은 원소 개수를 개발 단계에 상수로 결정하여 컴파일 시점에 할당할 메모리 크기를 결정합니다. 하지만 자료구조에서 말하는 배열은 C언어에서 제공하는 배열뿐만 아니라 같은 종류의 자료를 보관하기 위해 동적으로 메모리를 할당하여 관리하는 구조도 포함합니다. 이 책에서는 자료를 보관하는 저장소를 동적으로 할당하는 사용자 정의 배열을 구현하고 배열을 사용하는 방법을 살펴봅시다.[C언어 자료구조] 2.1 동적 배열 설계[C언어 자료구조] 2.2 동적 배열 구현[C언어 자료구조] 2.3 동적 배열 테스트[C언어 자료구조] 2.4 동적 배열 소스 코드

[C언어 자료구조] 1.2 공통으로 사용할 코드

[C언어 자료구조] 1.2 공통으로 사용할 코드앞으로 이 책에서 공통으로 사용할 소스를 먼저 소개할게요. 같은 부분을 계속 지면을 할애하는 것보다 앞에서 언급하고 넘어갈게요. 이 책에서 공통으로 사용할 Book 형식을 정의합시다. Book 형식에는 제목, 저자, 번호를 멤버로 구성하세요. #pragma once #define MAX_TIT_LEN 200 #define MAX_AUT_LEN 20 typedef struct _Book Book; struct _Book { char title[MAX_TIT_LEN+1]; char author[MAX_AUT_LEN+1]; int num; }; 그리고 동적으로 Book을 생성하는 함수와 소멸하는 함수를 제공합시다. Book *New_Book(const char *..

[C언어 자료구조] 1.1 자료구조(Data Structure)

[C언어 자료구조] 1.1 자료구조(Data Structure)자료구조는 자료를 메모리에 표현하는 구조를 말합니다. 자료구조를 분류할 때는 자료를 보관하는 형태에 따라 분류하는데 일반적으로 선형 자료구조와 비 선형 자료구조로 나누죠. 선형 자료구조는 자료를 보관하는 논리적인 구조를 하나의 선으로 나타낼 수 있습니다. 대표적인 선형 자료구조에는 배열과 연결리스트, 스택과 큐가 있습니다. 배열은 같은 형태의 자료를 연속적인 메모리에 관리하는 자료구조입니다. 그리고 연결리스트는 노드의 선형 집합이며 노드는 하나의 자료와 다른 노드의 위치 정보인 링크로 구성합니다. 스택과 큐는 단순히 자료를 보관하고 꺼내는 동작을 제공하며 스택은 최근에 보관한 자료를 꺼내는 LIFO(Last In First Out), 큐는 먼..

[C언어 자료구조] 1. 다루는 내용

[C언어 자료구조] 1. 다루는 내용 이 책은 프로그래머의 기초 지식인 자료구조를 이론적인 접근과 구현을 다루고 있습니다. 자료구조는 프로그램에 관라할 데이터를 어떠한 구조로 보관하고 접근할 것인가를 다루는 것이죠. 선형 자료구조인 배열이나 연결리스트, 스택, 큐와 비선형 자료구조인, 트리, 그래프 등이 있습니다. 컴퓨터 프로그래밍을 업무로 하는 이들에게 자료구조는 실질적인 구현에서 필수적으로 필요합니다. 그리고 이들을 다루는 책은 매우 다양하죠. 이 책에서는 선형 자료구조인 배열, 연결리스트, 스택, 큐를 다루고 비선형 자료구조는 이진 탐색 트리와 그래프를 다룹니다. 이 책에서는 이러한 자료구조를 설명하고 직접 구현하는 과정이 있습니다. 보다 탄탄한 프로그래밍 실력을 다지기 위해 자료구조를 익히고자 하..

[C언어] 8가지 정렬 알고리즘

순차 정렬(Sequential Sort) 알고리즘 이번에는 반복적인 방법으로 해결하는 순차 정렬(Sequential Sort) 알고리즘을 살펴볼게요. 정렬 알고리즘은 배열의 자료를 원하는 순으로 배치하는 알고리즘을 말해요. 정렬 알고리즘은 입력 인자로 정렬할 자료들이 있는 배열의 시작 주소와 원소 개수, 비교 알고리즘이 필요합니다. 그리고 수행 후에는 배열 내의 자료들은 원하는 순서로 배치한 상태여야 합니다. 순차 정렬은 맨 앞에서부터 제일 작은 원소를 배치하게 만들어 나가는 알고리즘이예요. 이를 위해 배치할 자리에 있는 원소를 뒤쪽에 있는 원소들과 비교하면서 작은 것을 발견하면 배치할 위치의 원소와 교환해요.순차 정렬(base:배열의 시작 주소, n: 원소 개수, compare:비교 논리) 반복(i:=..

6.3 병합 정렬 알고리즘 소스 코드

6.3 병합 정렬 알고리즘 소스 코드 //common.h #pragma once //헤더 파일을 한 번만 포함해서 컴파일 #include #include #include #include #include #include #include #pragma warning(disable:4996) //4996컴파일 경고 메시지 출력하지 말라. //Book.h #pragma once #include "common.h" #define MAX_TIT_LEN 200 #define MAX_AUT_LEN 20 typedef struct _Book Book; struct _Book { char title[MAX_TIT_LEN+1]; char author[MAX_AUT_LEN+1]; int num; }; Book *New_Boo..

6.2 병합 정렬 알고리즘 구현

6.2 병합 정렬 알고리즘 구현 이제 병합 정렬 알고리즘을 구체적으로 구현합시다. #include "common.h" #include "Book.h" typedef void *Element; typedef int (*Compare)(Element , Element); void merge_sort(Element *base, int n, Compare compare) { n의 절반의 크기를 ahalf에 기억합니다. 이는 배열을 분할할 때 앞쪽 배열의 원소 개수입니다. int ahalf = n/2; 배열을 분할할 때 뒤쪽 배열의 원소 개수를 bhalf에 기억합니다. int bhalf = n - ahalf; 분할할 배열을 하나의 배열로 정복하기 위한 인덱스를 선언합니다. ai는 앞쪽 배열의 인덱스로 사용할 것이..

5.3 퀵 정렬 알고리즘 소스 코드

5.3 퀵 정렬 알고리즘 소스 코드 다음은 퀵 정렬 알고리즘에 관해 구현한 전체 소스입니다. //common.h #pragma once //헤더 파일을 한 번만 포함해서 컴파일 #include #include #include #include #include #include #include #pragma warning(disable:4996) //4996컴파일 경고 메시지 출력 해제 //Book.h #pragma once #include "common.h" #define MAX_TIT_LEN 200 #define MAX_AUT_LEN 20 typedef struct _Book Book; struct _Book { char title[MAX_TIT_LEN+1]; char author[MAX_AUT_LEN+1..

5.2 퀵 정렬 알고리즘 구현

5.2 퀵 정렬 알고리즘 구현 앞에서 만들었던 정렬 알고리즘과 같은 방법으로 시뮬레이션 코드를 작성합니다. 여기에서는 퀵 정렬 알고리즘만 구현할게요. 참고로 퀵 정렬 알고리즘을 내부 알고리즘을 별도의 함수로 구현하지 않고 직접 구현할게요. 정렬 알고리즘은 수행 속도가 중요한 이슈이므로 복잡하더라도 하나의 함수로 구현할게요. void quick_sort(Element *base, int n, Compare compare) { 먼저 교환에 사용할 임시 변수와 피벗의 위치와 피벗보다 큰 값과 작은 값의 위치를 기억하기 위한 변수를 선언합시다. Element temp;//교환을 위한 임시 변수 int pivot = 0; //피벗의 위치를 기억하기 위한 변수 int big=0, small=0; //피벗보다 큰 값..

4.3 삽입 정렬 알고리즘 소스 코드

4.3 삽입 정렬 알고리즘 소스 코드 다음은 삽입 정렬 알고리즘과 이를 테스트 하는 소스 코드 내용입니다. //common.h #pragma once //헤더 파일을 한 번만 포함해서 컴파일 #include #include #include #include #include #include #include #pragma warning(disable:4996) //4996컴파일 경고 메시지 출력 해제 //Book.h #pragma once #include "common.h" #define MAX_TIT_LEN 200 #define MAX_AUT_LEN 20 typedef struct _Book Book; struct _Book { char title[MAX_TIT_LEN+1]; char author[MAX_A..

반응형