주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 이번 Chapter에서도 리스트에 대한 이야기를 이어갑니다. 다만 리스트의 특성을 설명하는 것이 아니라 '연결'을 기반으로 하는 다른 리스트의 구현 방법에 대해서 설명합니다. 다음 예제를 시작으로 '연결 리스트'에서의 '연결'이 의미하는 바의 설명을 진행하겠습니다. //main.c 소스 파일로 저장 #include int main(void) { int arr[10]; int readCount = 0; int readData; int i; while (1) { printf("자연수 입력 : "); scanf("%d", &readDat..
자료구조는 구현도 중요하지만 이에 못지않게 활용도 중요합니다. 실제로 이미 구현되어 있는 자료구조를 활용하는 것도 실력입니다. 따라서 다음 헤더 파일에 정의된 구조체를 기반으로 리스트를 활용하는 예제를 작성해 보기로 합니다. //NameCard.h 헤더 파일로 저장 #define NAME_LEN 30 #define PHONE_LEN 30 typedef struct { char name[NAME_LEN]; char phone[PHONE_LEN]; } NameCard; //NameCard 구조체 변수의 동적 할당 및 초기화 후 주소 값 반환 NameCard* MakeNameCard(char* name, char* phone); //NameCard 구조체 변수의 정보 출력 void ShowNameCardInf..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 현재 배우는 리스트는 연결 리스트를 말합니다. 그렇다고 '리스트는 연결리스트다'라고 생각하면 곤란합니다. 리스트라는 자료구조는 구현 방법에 따라서 다음과 같이 크게 두 가지로 나뉩니다. 순차 리스트 : 배열을 기반으로 구현된 리스트 연결 리스트 : 메모리의 동적 할당을 기반으로 구현된 리스트 순차 리스트와 연결 리스트 두 개로 분류하였지만 이 둘의 추상 자료형(ADT)은 동일할 수 있습니다. 하지만 두 리스트의 분류는 리스트의 구현 방법의 차이에서 비롯된 것이기 때문에 이 둘의 추상 자료형이 동일하다고 해서 문제가 될 것은 없습니다..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 드디어 첫 번째 자료구조를 배웁니다. 그런데 이에 앞서 '추상 자료형'이라는 용어를 먼저 소개하고자 합니다. 참고로 이 용어의 개념이 모호하다 하여 이에 대한 이해 없이 자료구조를 공부하는 경우도 있는데 이런 일은 없어야 한다고 저자는 말합니다. 문제를 하나 낼 테니 문제에서 설명하는 것이 무엇인지 맞춰보기 바랍니다. 여기에는 신용카드나 면허증과 같은 카드들을 넣고 뺄 수 있습니다. 여기에는 지폐나 동전도 넣을 수 있습니다. 이 문제의 답은 지갑입니다. 아마 다른 분들도 위 문제를 보고 지갑을 연상하는 데에 어려움은 없었을 것이라 ..