주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 앞서 구현한 연결 리스트에서 정렬 기준의 설정과 관련 있는 부분은 다음과 같습니다. 따라서 이들은 하나로 묶어서 이해해야 합니다. 연결 리스트의 정렬기준이 되는 함수를 등록하는 SetSortRule 함수 SetSortRule 함수를 통해서 전달된 함수 정보를 저장하기 위한 LinkedList의 멤버 comp comp에 등록된 정렬기준을 근거로 데이터를 저장하는 SInsert 함수 위에서 언급한 세 가지를 하나의 문장으로 정리하면 다음과 같습니다. "SetSortRule 함수가 호출되면서 정렬의 기준이 리스트의 멤버 comp에 등록되..
2021.03.08 - [자료구조 공부일지] - Chapter 03. 배열을 이용한 리스트의 구현 Chapter 03. 배열을 이용한 리스트의 구현 주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 현재 배우는 리 koey.tistory.com 위 글에서 Point 구조체의 주소값을주소 값을 저장하기 위해 배열 기반의 리스트를 사용했습니다. 이번에도 마찬가지로 연결 리스트를 이용해 Point 구조체의 주소 값을 저장할 수 있도록 합니다. 단, 다음의 주어지는 main 함수를 변경하여서는 안 됩니다. 그리고 ArrayList.h와 ArrayList.c 파일을 대신해서 DLinkedL..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 다음은 노드를 표현한 구조체의 정의입니다. 그리고 연결 리스트의 구현에서 이는 결코 빠지지 않습니다. typedef struct Node { LData data; struct Node* nest; } Node; 그런데 연결 리스트의 구현에 필요한 다음 유형의 변수들은 별도의 구조체로 묶이지 않고 그냥 main 함수의 지역변수로 선언하기도 하고, 더 나쁜 경우에는 전역 변수로 선언하기도 합니다. Node* head; Node* cur; 위 유형의 포인터 변수들은 전역 변수로도, main 함수의 지역변수로도 선언해서는 절대 안 됩니다...
더미 노드의 유무에 따른 코드의 변화를 직접 경험하는 것은 코드의 이해력을 높이는데 도움이 됩니다. 그래서 앞서 다루었던 예제 #include #include typedef struct Node { int data; struct Node* next; } Node; int main(void) { Node* head = NULL; Node* tail = NULL; Node* cur = NULL; Node* newNode = NULL; int readData; //데이터를 입력 받는 과정 while (1) { printf("자연수 입력 : "); scanf("%d", &readData); if (readData < 1) break; //노드의 추가 과정 newNode = (Node*)malloc(sizeof(..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 앞서 다룬 예제도 연결 리스트로 볼 수 있지만, 완벽한 형태의 연결 리스트는 아니었습니다. 이번 시간부터 본격적으로 연결 리스트를 공부하게 됩니다. 처음 공부할 내용은 연결의 형태가 한쪽 방향으로 전개되고 시작과 끝이 분명히 존재하는 '단순 연결 리스트'입니다. 기능적으로 무엇인가를 변경하거나 추가하지 않는다면 ADT를 변경할 이유는 없습니다. 하지만 이번 시간에는 연결 리스트에 정렬 관련 기능을 추가하기 위해서 ADT를 조금 확장하고자 합니다. 확장된 ADT는 다음과 같습니다. void ListInit(List* plist); v..
앞서 소개한 연결 리스트 예제 #include #include typedef struct Node { int data; struct Node* next; } Node; int main(void) { Node* head = NULL; Node* tail = NULL; Node* cur = NULL; Node* newNode = NULL; int readData; //데이터를 입력 받는 과정 while (1) { printf("자연수 입력 : "); scanf("%d", &readData); if (readData data = readData; newNode->next = NULL..