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

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