Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 재귀를 사용하여 연결 목록의 대체 노드 인쇄

<시간/>

연결 목록은 요소를 인접하지 않은 메모리 위치에 저장하는 선형 데이터 구조입니다. 모든 요소는 연결 목록의 다음 요소에 대한 포인터를 포함합니다.

-

C++에서 재귀를 사용하여 연결 목록의 대체 노드 인쇄

이 문제에서는 연결 목록이 주어지고 이 연결 목록의 요소를 인쇄해야 하지만 대체 요소만 인쇄해야 합니다. 문제를 더 잘 이해하기 위해 예를 들어보겠습니다.

Input : 2 -> 4 -> 1 -> 67 -> 48 -> 90
Output : 2 -> 1 -> 48

설명 − 연결 목록에 대체 요소를 인쇄합니다. 따라서 첫 번째, 세 번째 및 다섯 번째 요소가 인쇄됩니다.

처음에는 0이 될 플래그 요소를 사용하고 요소를 인쇄하는 모든 반복에서 증가할 것입니다. 그렇지 않으면 요소를 감소시키고 플래그가 0일 때 노드 값을 인쇄합니다.

예시

#include <stdio.h>
#include <stdlib.h>
struct Node {
   int data;
   struct Node* next;
};
void printAlternateNode(struct Node* head){
   int flag = 0;
   while (head != NULL) {
      if (flag == 0){
         printf(" %d ", head->data);
         flag = 1;
      }
      else
         flag = 0;
         head = head->next;
   }
}
void insertNode(struct Node** head_ref, int new_data){
   struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
   new_node->data = new_data;
   new_node->next = (*head_ref);
   (*head_ref) = new_node;
}
int main(){
   struct Node* head = NULL;
   insertNode(&head, 23);
   insertNode(&head, 4);
   insertNode(&head, 98);
   insertNode(&head, 5);
   insertNode(&head, 71);
   printAlternateNode(head);
   return 0;
}

출력

71  98  23