주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 앞서 여러 Chapter에 걸쳐 공부한 리스트는 대표적인 선형 자료구조입니다. 그리고 이번에 배우게 될 스택이란 자료구조도 선형 자료구조의 일종입니다. 스택이란 총알을 저장하는 탄창에 비유할 수 있습니다. 아니면 차곡차곡 쌓이는 접시에도 비유할 수 있습니다. 이 둘의 공통점은 가장 마지막에 추가한 것일수록 가장 먼저 사용된다는 것에 있습니다. 총알의 경우 총알을 하나씩 탄창에 넣다 보면 가장 먼저 넣은 총알은 탄창의 가장 아래에 위치하게 됩니다. 그리고 가장 마지막에 넣은 총알이 탄창의 가장 위로 나옵니다. 따라서 이 탄창을 총에 ..
이번 연습문제에서는 양방향 연결 리스트의 완전한 구현을 요구합니다. 이유는 앞서 구현한 양방향 연결 리스트를 모델로 하여 조금만 수정하고 조금만 보태면 완성할 수 있기 때문입니다. 더미 노드 기반의 양방향 연결 리스트의 특징은 다음과 같습니다. 양방향 연결 리스트다. 더미 노드가 리스트의 앞과 뒤에 각각 존재한다. 포인터 변수 head와 tail이 있어서 리스트의 앞과 뒤를 각각 가리킨다. 이 경우 꼬리에도 더미 노드가 존재함에 유의합니다. 그리고 구현 범위를 제한한다는 의미에서 헤더 파일의 일부를 제공합니다. 즉, 아래에서 보이는 구조체의 함수를 기반으로 양방향 연결 리스트를 구현하면 됩니다. typedef struct Node { Data data; struct Node* next; struct No..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. '양방향 연결 리스트' 또는 '이중 연결 리스트'라고도 불리는 이 자료구조는 그 이름이 의미하듯 노드가 양쪽 방향으로 연결된 구조의 리스트입니다. 즉, 왼쪽 노드가 오른쪽 노드를 가리킴과 동시에 오른쪽 노드도 왼쪽 노드를 가리키는 구조입니다. 양방향 연결 리스트를 이해하기는 어렵지 않습니다. 지금까지 배운 연결 리스트를 크게 세 가지로 분류하자면 다음과 같습니다. 단순 연결 리스트 더미 노드 연결 리스트 원형 연결 리스트 위 세 가지 연결 리스트는 모드 한쪽 방향으로면 연결되는 단방향 연결 리스트입니다. 양방향 연결 리스트는 위 세..
앞서 구현한 원형 연결 리스트를 기반으로 다음 내용을 모두담고 있는 프로그램을 작성해 봅니다. 직원 정보를 등록할 수 있다. 직원 정보는 사번과 이름으로 구성이 된다. 직원 정보를 담을 수 있는 구조체를 정의하고, 이를 기반으로 대략 네 명의 직원 정보를 원형 연결 리스트에 저장합니다. 네 명의 직원 정보는 임의로 결정하기로 하고(프로그램 사용자로부터 입력받지 않아도 됩니다), 직원의 사번은 int형 변수에 담을 수 있다고 가정합니다. 그리고 원형 연결 리스트에는 구조체 변수의 주소 값을 저장하는 것을 원칙으로 합니다. 직원은 순서대로 돌아가면서 당직을 섭니다. 당직의 순서는 프로그램에 등록되는 등록 순서를 기준으로 결정됩니다. 예를 들어서 A, B, C의 순으로 직원이 등록되었다면 당직을 서는 순서도 ..