연결 목록은 요소를 인접하지 않은 메모리 위치에 저장하는 선형 데이터 구조입니다. 모든 요소는 연결 목록의 다음 요소에 대한 포인터를 포함합니다.
예 -
이 문제에서는 연결 목록이 주어지고 이 연결 목록의 요소를 인쇄해야 하지만 대체 요소만 인쇄해야 합니다. 문제를 더 잘 이해하기 위해 예를 들어보겠습니다.
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