연결된 목록을 구성하는 데 사용되는 정수 값을 얻습니다. 작업은 먼저 재귀적 방법을 사용하여 단일 연결 목록을 삽입한 다음 순회하는 것입니다.
헤드가 NULL인 경우 → 헤드에 노드 추가
그렇지 않으면 헤드에 추가( head → next)
헤드가 NULL인 경우 → 종료
그렇지 않으면 인쇄( head → next )
Input− 1 - 2 - 7 - 9 - 10
Output
Output Strong>− 연결 목록 : 1 → 2 → 7 → 9 → 10 → NULL
Input− 12 - 21 - 17 - 94 - 18
Output− 연결 목록: 12 → 21 → 17 → 94 → 18 → NULL
이 방법에서는 함수를 사용하여 노드를 추가하고 단일 연결 목록을 순회하며 다음 입력을 위해 재귀적으로 호출합니다.
정수와 다음 포인터가 포함된 구조체 SLLNode*를 가져옵니다.
Function addtoEnd(SLLNode* head, int data) 연결된 목록의 헤드에 대한 포인터와 데이터 부분의 정수를 가져오고 연결 목록의 끝에 노드를 추가합니다.
li>헤드 포인터가 NULL이면 목록이 비어 있으므로 이제 새 노드를 추가하고 이를 헤드로 설정합니다. head → next를 NULL로 추가합니다. 노드에 대한 포인터를 반환합니다.
head가 null이 아닌 경우 head->next = addtoEnd(head->next, data)를 사용하여 노드를 head → next에 추가합니다.
함수 traverseList(SLLNode* head) 헤드부터 순회하고 각 값을 인쇄합니다.
head가 NULL이면 NULL을 인쇄하고 반환합니다.
그렇지 않으면 데이터 값을 인쇄하고 traverseList(head->next)를 사용하여 다음으로 이동합니다.
기본 생성 목록에서 addtoEnd()를 사용하고 traverseList()를 사용하여 목록을 인쇄합니다.
#include <bits/stdc++.h> using namespace std; struct SLLNode { int data; SLLNode* next; }; SLLNode* addtoEnd(SLLNode* head, int data){ if (head == NULL){ SLLNode *nodex = new SLLNode; nodex->data = data; nodex->next = NULL; return nodex; } else{ head->next = addtoEnd(head->next, data); } return head; } void traverseList(SLLNode* head){ if (head == NULL){ cout <<"NULL"; return; } cout << head->data << " -> "; traverseList(head->next); } int main(){ SLLNode* head1 = NULL; head1 = addtoEnd(head1, 1); head1 = addtoEnd(head1, 8); head1 = addtoEnd(head1, 56); head1 = addtoEnd(head1, 12); head1 = addtoEnd(head1, 34); cout<<"Linked List is :"<<endl; traverseList(head1); return 0; }
위 코드를 실행하면 다음과 같은 출력이 생성됩니다
Linked List is : 1 -> 8 -> 56 -> 12 -> 34 -> NULL
위 내용은 C++에서 연결 리스트의 재귀 삽입 및 순회의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!