단일 연결 목록은 자체 참조 구조를 사용하여 생성된 노드로 구성된 데이터 구조 유형입니다. 이러한 각 노드는 데이터와 다음 목록 노드에 대한 참조라는 두 부분을 포함합니다. 전체 연결 목록에 액세스하려면 첫 번째 목록 노드에 대한 참조만 필요합니다. 이것은 머리로 알려져 있습니다. 목록의 마지막 노드는 아무 것도 가리키지 않으므로 해당 부분에 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;
}