반응형

분류 전체보기 2934

[C언어 자료구조] 3.2 연결리스트 구현

[C언어 자료구조] 3.2 연결리스트 구현 연결리스트를 동적으로 생성하는 함수를 작성합시다. LinkedList *New_LinkedList() { LinkedList *linkedlist = 0; 먼저 LinkedList 형식 크기의 메모리를 할당합니다. linkedlist = (LinkedList *)malloc(sizeof(LinkedList)); 그리고 head와 tail에 더미 노드를 생성합니다. 노드를 생성하는 함수는 별도로 작성합시다. linkedlist->head = New_Node(0); linkedlist->tail = New_Node(0); head의 next링크를 tail을 가리키게 하고 tail의 prev 링크를 head를 가르키게 합니다. linkedlist->head->next..

[C언어 자료구조] 3.1 연결리스트 설계

[C언어 자료구조] 3.1 연결리스트 설계 동적 배열처럼 연결리스트도 동적으로 생성한 개체는 형식에 관계없이 보관할 수 있게 정의할게요. 사용하기 편리하게 void * 형식을 Element 형식으로 타입 재지정할게요. typedef void * Element; 연결리스트는 노드의 선형 집합입니다. 노드는 링크와 데이터의 조합으로 여기에서는 두 개의 링크를 갖는 노드를 정의할 것입니다. typedef struct _Node Node; typedef Node *Link; struct _Node { Link next; Link prev; Element data; }; 연결리스트 구조체에는 맨 앞에 있는 더미 노드의 위치 정보인 head와 맨 뒤에 있는 더미 노드의 위치 정보인 tail과 보관한 자료 개수를 멤..

[C언어 자료구조] 3. 연결리스트

연결리스트는 노드의 선형 집합입니다. 노드란 데이터와 링크의 조합으로 하나의 데이터를 보관하는 작은 저장소입니다. 그리고 링크는 노드의 위치 정보입니다. [그림 3.1] 연결리스트 연결리스트는 노드에 링크가 하나만 있는 단일(단순) 연결리스트와 링크가 두 개 있는 이중 연결리스트로 구분할 수 있습니다. 이 책에서는 노드에 이전 노드의 위치 정보를 가르키는 링크와 다음 노드의 위치 정보를 가르키는 링크를 갖고 있는 이중 연결리스트를 만들고 사용하는 방법을 소개할 것입니다. 특히 연결리스트를 생성할 때 연결리스트의 맨 앞과 맨 뒤에 더미 노드를 생성하여 자료를 보관하는 노드들을 이들 사이에 배치할게요.[C언어 자료구조] 3.1 연결리스트 설계[C언어 자료구조] 3.2 연결리스트 구현[C언어 자료구조] 3.3..

[C언어 자료구조] 2.4 동적 배열 소스 코드

[C언어 자료구조] 2.4 동적 배열 소스 코드//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_B..

[C언어 자료구조] 2.3 동적 배열 테스트

[C언어 자료구조] 2.3 동적 배열 테스트 앞에서 만든 동적 배열이 잘 동작하는지 확인하는 시뮬레이션 코드를 작성합시다. 여기에서는 순차적으로 자료를 보관하는 예와 특정 키순으로 보관하는 예, 인덱스를 사용하는 예를 들게요. int main() { Simul_Seq(); Simul_Order(); Simul_Index(); return 0; } 먼저 순차적으로 동적 배열을 사용하는 시뮬레이션 코드를 작성합시다. void Simul_Seq() { 먼저 동적 배열을 생성합니다. Array *arr = New_Array(); 그리고 도서 개체를 생성하여 순차적으로 동적 배열에 보관합니다. Array_PushBack(arr,New_Book("C언어","홍길동",10)); Array_PushBack(arr,Ne..

[C언어 자료구조] 2.2 동적 배열 구현

[C언어 자료구조] 2.2 동적 배열 구현 먼저 동적 배열을 생성하는 함수를 작성합시다.Array *New_Array(){ 동적 배열 형식 크기의 메모리를 할당합니다. Array *arr = 0; arr = (Array *)malloc(sizeof(Array)); 자료를 보관할 저장소는 0으로 초기화합니다. 여기서 구현할 동적 배열은 저장소가 꽉 차면 내부적으로 저장소의 크기를 확장해 나갈 것입니다. arr->base = 0; 저장소에 용량과 보관한 자료 개수를 0으로 초기화한 후 동적 배열을 반환합니다. arr->capacity = arr->usage = 0; return arr;} 동적 배열을 소멸하는 함수를 작성합시다.void Delete_Array(Array *arr){ 만약 저장소가 유효하면 저..

[C언어 자료구조] 2.1 동적 배열 설계

[C언어 자료구조] 2.1 동적 배열 설계 여기에서 작성하는 배열은 동적 배열입니다. 동적 배열이란 자료를 저장하는 메모리를 프로그램 동작 중에 크기를 결정하여 동적으로 할당하는 배열을 말합니다. 즉 보관할 수 있는 원소의 개수를 개발 단계에서 결정하는 것이 아니라 실행 시간에 결정하는 것을 말합니다. 그리고 저장소에 자료를 보관한 상태가 꽉 찼을 때 다른 자료를 보관 요청하면 저장소의 크기를 확장하는 확장 가능한 동적 배열로 정의합시다. 이를 위해서 사용자 정의 배열 형식에서는 저장소의 위치 정보와 현재 저장소의 크기와 보관하고 있는 자료 개수를 멤버로 기억하고 있어야 합니다. 특히 이 책에서 작성한 배열은 동적으로 생성한 자료를 보관하기 위한 용도로 작성합시다. 어떠한 형태의 자료이든 동적으로 생성한..

[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), 큐는 먼..

반응형