
Data Structure(자료 구조)를 주제로 한 일곱번째 포스팅은 원형큐와 선형큐를 이용하여 자료를 구성하고 이때 처리시간을 비교하는 실험을 해보겠습니다. "선형큐와 원형큐를 구현하고 같은 양의 데이터에 있어 처리시간을 비교하여라" 두 형식의 큐를 직접 구현하여 MAX_QUEUE_SIZE를 10, 100, 200, 400, 800, 1000으로 변환하며 처리시간을 실험해 봤습니다. 실험 결과 원형큐의 경우가 선형큐에 비해 확실히 시간이 절약되었고 결과는 다음 차트와 같습니다. 크기가 더욱 커지게 된다면 소요되는 시간 더욱 차이가 날것으로 예상됩니다. 프로그램소스) #include #include #include #define MAX_QUEUE_SIZE 1000 /*typedef struct { int..

Data Structure(자료 구조)를 주제로 한 여섯번째 포스팅은 연결 리스트 중에서도 포인터 두개를 사용하여 링크를 앞뒤로 시키는 이중연결리스트에 대하여 다루어보겠습니다. 간단하게 이중연결리스트로 리스트를 하나 구성하고 이를 리버스로 출력하는 예제를 다루며 알아보겠습니다. "이중 연결리스트를 구성하고 출력할때 리버스 출력하라" 해결과정) 출력부분에서 rlink와 llink를 바꾼 출력함수를 두가지 코딩하여 메인에서 불러왔습니다. //리버스 출력 void print_dlist(DListNode* phead) { DListNode* p; for (p = phead->rlink; p != phead; p = p->rlink) { printf(" %s ", p->data); } printf("\n"); }..

Data Structure(자료 구조)를 주제로 한 다섯번째 포스팅은 저번포스팅에 이어 자료의 구조중 실제 프로그래밍에서 많이 사용되는 연결리스트를 다루어보겠습니다. 이번 포스팅에서는 리스트를 이용한 예제를 해결해 보겠다 했었는데요, 예제문제는 다음과 같습니다. "단어 10개이상으로 구성된 연결리스트를 만들고 리버스하여 출력하라" 문제 해결을 시작해 보겠습니다. 먼저 단어를 저장할수 있는 연결리스트를 만들기 위해서, element를 배열을 포함하는 구조체로 정의했습니다 typedef struct { char name[100]; }element; 리스트의 Print함수 또한 저장된 문자열을 출력할수 있도록 수정했습니다. void print_lsit(listnode* head) { for (listnode*..

Data Structure(자료 구조)를 주제로 한 네번째 포스팅은 자료의 구조중 실제 프로그래밍에서 많이 사용되는 연결리스트를 다루어보겠습니다. 먼저 리스트와 노드에 대해서 다루어 보고 다음포스팅때는 리스트를 이용한 예제를 해결해보겠습니다. 리스트 노드를 C언어의 구조체로 선언한 것을 파악해 보며 노드를 이해해보겠습니다. typedef int element; typedef struct ListNode { element data; struct ListNode *link; } ListNode; typedef int element; element 자료형을 int형으로 다른 타입을 부여함 typedef struct ListNode { 노드타입을 구조체로 타입을 부여함. element data; data필드는 ..

Data Structure(자료 구조)를 주제로 한 세번째 포스팅은 자료의 구조중 스택이라는 구조와 이 스택구조를 이용한 미로를 표현해 보겠습니다. 먼저 스택이란? 후입선출(Last In First Out—LIFO)의 형태를 가지고 있는 자료구조로써 아래의 그림과 같습니다. 메모리에 새로 들어오는 데이터의 위치가 그릇의 탑(꼭대기)이고, 써먹기 위해 내보내는 데이터 역시 꼭대기에 위치한다. 입력연산은 Push, 출력연산은 Pop이라고 부른다. 조회연산은 Peek라고 하는데, 탑 포인터가 가리키는 데이터를 확인만 할 뿐, 탑의 인덱스는 변화시키지 않는 연산을 의미한다. 위에서 설명했듯이 스택을 사용하기 위해서는 스택의 자료를 조작하기 위한 여러가지 함수(pop push ...)가 필요합니다. C언어에서 스..

Data Structure(자료 구조)를 주제로 한 두번째 포스팅은 희소행렬, 전치행렬의 구조를 이해하여, 구조체로 표현해보고 이와 관련된 예제를 해결해보겠습니다. intro. 희소 행렬이란, 행렬의 원소에 비교적 0이 많은 행렬을 말한다 많은 항들이 0으로 되어있는 희소행렬인 경우에는 메모리의 낭비가 심하게 된다. 더구나 엄청난 크기의 희소행렬인 경우에는 컴파일러에 따라 사용하지 못하는 경우도 있다. 이러한 희소행렬을 표현함에 있어, 저장공간을 아끼기 위해 희소행렬을 전치행렬로 변환하는 프로그램을 두가지 방법으로 표현해보겠습니다. 방법1, 정통적인 2차원배열로 표현하여 전치 연산을 하는 것 (풀이) #define rows 3 #define cols 3 3by3으로 행과 열의 공간을 지정했습니다 void..

Data Structure(자료 구조)를 주제로 한 첫번째 포스팅은 추상 자료형(ADT : abstract data type)에 대하여 알아보겠습니다. 추상 자료형(ADT : abstract data type)이란 자료형을 추상적, 수학적으로 정의한 것이다. 즉, 프로그래밍 언어로 구현하기전의 시스템을 간략화된 기술 또는 명세에 집중하는것입니다. 시스템의 정말 핵심적인 구조나 동작에만 집중하여 표현하는 것으로 좋은 추상화란 사용자에게 중요한 정보는 강조되고 중요하지 않은 구현 세부사항은 제거되는 것입니다. 추상형 자료타입에서는 데이터나 연산이 무엇(what)인지는 정의되지만, 연산을 어떻게(how) 컴퓨터에서 구현할 것인지는 정의되지 않습니다. 예를들어 연산의 이름, 변수, 반환형은 정의하지만, 구체적인..

안녕하세요 Shiny Ocean입니다. 이번 카테고리에서 다룰 내용은 Data Structure(자료 구조) 입니다. Introduction) 이번 챕터에서 다루어볼 Data Structure는 컴퓨터에서 처리할 자료를 효율적으로 관리하고 구조화시키기는 과정을 다루는 과목입니다. 즉, 자료를 효율적으로 사용하기 위해서 자료의 특성에 따라서 분류하여 구성하고 저장 및 처리하는 모든 작업을 통틀어서 자료구조 라고 합니다. 저는 대학교 2학년 1학기 자료구조 강의를 수강하며 C언어를 이용하여 데이터의 타입을 분석하고 이를 이용하여 자료의 구조화시키는 공부를 해본 경험이 있습니다. 이번 챕터에서는 유용한 프로그래밍 및 자료의 관리를 위해 프로그래머라면 꼭 다루어 보아야할 자료구조라는 과목을 주제로 포스팅을 진행..