단일 연결 목록은 자체 참조 구조를 사용하여 생성된 노드로 구성된 데이터 구조 유형입니다. 이러한 각 노드는 데이터와 다음 목록 노드에 대한 참조라는 두 부분을 포함합니다. 전체 연결 목록에 액세스하려면 첫 번째 목록 노드에 대한 참조만 필요합니다. 이것은 머리로 알려져 있습니다. 목록의 마지막 노드는 아무 것도 가리키지 않으므로 해당 부분에 NULL을 저장합니다.
단일 연결 리스트를 구현하는 프로그램은 다음과 같다.
예시
#include <iostream> using namespace std; struct Node { int data; struct Node *next; }; struct Node* head = NULL; void insert(int new_data) { struct Node* new_node = (struct Node*) malloc(sizeof(struct Node)); new_node->data = new_data; new_node->next = head; head = new_node; } void display() { struct Node* ptr; ptr = head; while (ptr != NULL) { cout<< ptr->data <<" "; ptr = ptr->next; } } int main() { insert(3); insert(1); insert(7); insert(2); insert(9); cout<<"The linked list is: "; display(); return 0; }
출력
The linked list is: 9 2 7 1 3
위의 프로그램에서 Node 구조체는 연결 리스트 노드를 형성합니다. 여기에는 데이터와 다음 연결 목록 노드에 대한 포인터가 포함됩니다. 이것은 다음과 같이 주어집니다.
struct Node { int data; struct Node *next; };
insert() 함수는 연결 리스트의 시작 부분에 데이터를 삽입합니다. new_node를 생성하고 new_node의 데이터 필드에 숫자를 삽입합니다. 그런 다음 new_node는 헤드를 가리킵니다. 마지막으로 head는 new_node입니다. 즉, 연결 목록이 거기에서 시작됩니다. 이것은 아래와 같습니다.
void insert(int new_data) { struct Node* new_node = (struct Node*) malloc(sizeof(struct Node)); new_node->data = new_data; new_node->next = head; head = new_node; }
display() 함수는 전체 연결 목록을 표시합니다. 첫 번째 ptr은 머리를 가리킵니다. 그런 다음 노드의 모든 데이터 값이 인쇄될 때까지 다음 노드로 계속 전달됩니다. 이것은 아래와 같습니다.
void display() { struct Node* ptr; ptr = head; while (ptr != NULL) { cout<< ptr->data <<" "; ptr = ptr->next; } }
main() 함수에서 먼저 insert()를 호출하여 연결 목록에 다양한 값을 삽입합니다. 그런 다음 연결 목록이 표시됩니다. 이것은 아래와 같습니다.
int main() { insert(3); insert(1); insert(7); insert(2); insert(9); cout<<"The linked list is: "; display(); return 0; }