전체보기
126개의 글
Linked List : 연결 리스트 저번 시간에는 연결 리스트의 개념에 대해 배워 보았다.이번 포스팅은 연결 리스트를 어떻게 구현하는지에 관한 내용이다. 어떤 개념을 이해하는 데에 효과적인 방법으로는 ,자신이 직접 코드를 작성하는 것 / 남이 짠 코드를 분석하는 것 이라고 생각한다.따라서 이 두 가지 방법을 모두 다 사용하기 위해 절반의 코드를 작성하여 업로드 할 것이다.비어 있는 부분의 코드를 직접 작성하기 위해서는, 기존에 작성되어 있는 코드를 잘 이해하여야 한다. 그럼 시작해보자. 우선 굉장히 단순하게 연결 리스트를 구현하기 위한 것이다. 1. 구조체 정의 12345678910typedef struct _node { int data; struct _node *next;}Node, *pNode; t..
Linked List : 연결 리스트 처음으로 나오는 연속하지 않는 자료구조이다.배열을 설명할 때 나왔던 것처럼, 연속된 메모리를 사용하려면 메모리에 커다란 가용 공간이 있어야 한다.그렇지만 연결 리스트를 사용하면 그런 제한 조건에서 벗어나게 된다. 그렇다면 연결 리스트는 어떤 방식으로 동작하는 것일까 ? 먼저, 배열과 비교해보자. 배열은 연속된 메모리에 할당되어 있으므로, 각각의 변수에 접근하기가 매우 편했다.예를 들어 int 변수의 배열이라면, 1번째 변수의 주소에 4를 더하면 2번째 변수의 주소가 되고, 3번째 변수의 주소는 그 주소에 4를 더하면 된다.무척이나 간단하게 변수들에 접근 할 수 있다는 것이다. 그림1. 불연속 메모리 공간 그림1을 보자면, 우리가 연결 리스트를 사용하는 가장 큰 장점은..
Struct : 구조체(코드 상 struct이지만, 구조체는 structure일까 struct일까..?) 구조체의 특징1. 다양한 타입의 변수 !2. 연속된 메모리 공간 ! 1번 특징은 배열과 정 반대이다. 하나의 구조체는 같거나, 서로 다른 타입의 변수들로 구성이 가능하다. 12345678910111213struct Person { char name[20]; int age; char sex;}; void main() { struct Person yangd = { "Yangd", 25, 'M' }; printf("이름 : %s \n나이 : %d \n성별 : %c\n", yangd.name, yangd.age, yangd.sex); }Colored by Color Scriptercs 위의 코드는 구조체를 ..
12345678910111213141516171819typedef struct _node { int data; struct _node *next;}Node, *pNode; typedef struct _list { int count; // 노드의 갯수를 저장한다. pNode head; // 첫번째 노드를 가리킨다. pNode tail; // 마지막 노드를 가리킨다.}List, *pList; //Linked List를 만들기 위한 함수. pList makeList() { pList list = (pList)malloc(sizeof(List)); list->count = 0; list->head = NULL; list->tail = NULL; return list;}Colored by Color Scripte..
Array : 배열배열은 가장 기초적인 데이터 구조라고 할 수 있다.기본 변수들을 여러개 동시에 선언하고, 사용한다. 일반적인 변수 10개를 선언한 것과, 10개짜리 배열 1개 선언한 것은 같은 메모리를 차지한다.그렇지만 그 사용에 있어서 편리함은 천지 차이이고, 이것이 우리가 데이터구조들에 대해 배워야하는 이유가 될 것이다. 배열의 특징 1. 메모리 상에 연속된 여러 변수들이 모여서 하나의 배열을 이룬다.2. 대괄호[] 내부에 변수의 index를 지정하여 각각의 변수에 접근할 수 있다.3. 배열의 이름은 배열의 첫번째 변수, 즉 배열[0]의 포인터이다.4. 선언 할 때에 배열의 크기를 결정하며, 변경할 수 없다.5. 같은 종류의 변수만 선언 가능하다. 배열은 위의 특징들을 깊이 이해하는 것이 중요하다...
Why Data Structure?프로그래밍을 할 때에 우리는 수많은 변수를 선언하고, 초기화하며, 수정하며 사용한다.그렇다면 이런 변수들은 어디에 저장되는 것일까? 바로 Memory 공간에 저장된다. 특히나 RAM 공간에 저장된다고 할 수 있다.다음은 RAM의 사전적 정의이다.RAM(Random Access Memory)은 기억된 정보를 읽어내기도 하고 다른 정보를 기억시킬 수도 있는 메모리로서, 컴퓨터의 주기억장치, 응용 프로그램의 일시적 로딩(loading), 데이터의 일시적 저장 등에 사용된다.[네이버 지식백과] RAM [random access memory] (두산백과)위의 설명을 보면 데이터의 일시적 저장 에 사용된다고 나와 있다.이러한 변수들은 영구적으로 하드디스크에 저장되는 것이 아니라 일..