Cho danh sách liên kết đơn. In các nút ở vị trí chẵn (1, 3, 5...). Ví dụ: 2→4→1→67→48→90 cho kết quả 2→1→48.
Giải thuật lặp với cờ
Sử dụng biến flag xen kẽ giữa 0 và 1. In khi flag=0, sau đó đảo flag. Duyệt qua danh sách một lần.
Ví dụ minh họa
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
Node* next;
};
void printAlternate(Node* head) {
int flag = 0;
while (head) {
if (flag == 0) {
printf("%d ", head->data);
flag = 1;
} else {
flag = 0;
}
head = head->next;
}
}
void insert(Node** head, int data) {
Node* node = (Node*)malloc(sizeof(Node));
node->data = data;
node->next = *head;
*head = node;
}
int main() {
Node* head = NULL;
insert(&head, 23);
insert(&head, 4);
insert(&head, 98);
insert(&head, 5);
insert(&head, 71);
printAlternate(head); // 71 98 23
return 0;
}
Kết quả
71 98 23