# Print the alternate nodes of linked list (Iterative Method)

• Difficulty Level : Easy
• Last Updated : 20 Mar, 2023

Given a linked list, print the alternate nodes of the linked list.
Examples:

```Input : 1 -> 8 -> 3 -> 10 -> 17 -> 22 -> 29 -> 42
Output : 1 -> 3 -> 17 -> 29
Alternate nodes : 1 -> 3 -> 17 -> 29

Input : 10 -> 17 -> 33 -> 38 -> 73
Output : 10 -> 33 -> 73
Alternate nodes : 10 -> 33 -> 73```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach :

1. Traverse the whole linked list.
2. Set count = 0.
3. Print node when the count is even.
4. Visit the next node.

Implementation:

## C++

 `// CPP code to print Alternate Nodes``#include ``using` `namespace` `std;` `/* Link list node */``struct` `Node``{``    ``int` `data;``    ``struct` `Node* next;``};` `/* Function to get the alternate``nodes of the linked list */``void` `printAlternateNode(``struct` `Node* head)``{``    ``int` `count = 0;` `    ``while` `(head != NULL)``    ``{` `        ``// when count is even print the nodes``        ``if` `(count % 2 == 0)``            ``cout  << head->data << ``" "``;` `        ``// count the nodes``        ``count++;` `        ``// move on the next node.``        ``head = head->next;``    ``}``}` `// Function to push node at head``void` `push(``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;``}` `// Driver code``int` `main()``{``    ``/* Start with the empty list */``    ``struct` `Node* head = NULL;` `    ``/* Use push() function to construct``    ``the below list 8 -> 23 -> 11 -> 29 -> 12 */``    ``push(&head, 12);``    ``push(&head, 29);``    ``push(&head, 11);``    ``push(&head, 23);``    ``push(&head, 8);` `    ``printAlternateNode(head);` `    ``return` `0;``}` `// This code is contributed by shubhamsingh10`

## C

 `// C code to print Alternate Nodes``#include ``#include ` `/* Link list node */``struct` `Node {``    ``int` `data;``    ``struct` `Node* next;``};` `/* Function to get the alternate``   ``nodes of the linked list */``void` `printAlternateNode(``struct` `Node* head)``{``    ``int` `count = 0;` `    ``while` `(head != NULL) {` `        ``// when count is even print the nodes``        ``if` `(count % 2 == 0)``            ``printf``(``" %d "``, head->data);` `        ``// count the nodes``        ``count++;` `        ``// move on the next node.``        ``head = head->next;``    ``}``}` `// Function to push node at head``void` `push(``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;``}` `// Driver code``int` `main()``{``    ``/* Start with the empty list */``    ``struct` `Node* head = NULL;` `    ``/* Use push() function to construct``       ``the below list 8 -> 23 -> 11 -> 29 -> 12 */``    ``push(&head, 12);``    ``push(&head, 29);``    ``push(&head, 11);``    ``push(&head, 23);``    ``push(&head, 8);` `    ``printAlternateNode(head);` `    ``return` `0;``}`

## Java

 `// Java code to print Alternate Nodes``class` `GFG``{``    ` `/* Link list node */``static` `class` `Node``{``    ``int` `data;``    ``Node next;``};` `/* Function to get the alternate``nodes of the linked list */``static` `void` `printAlternateNode( Node head)``{``    ``int` `count = ``0``;` `    ``while` `(head != ``null``)``    ``{` `        ``// when count is even print the nodes``        ``if` `(count % ``2` `== ``0``)``            ``System.out.printf(``" %d "``, head.data);` `        ``// count the nodes``        ``count++;` `        ``// move on the next node.``        ``head = head.next;``    ``}``}` `// Function to push node at head``static` `Node push( Node head_ref, ``int` `new_data)``{``    ``Node new_node = ``new` `Node();``    ``new_node.data = new_data;``    ``new_node.next = (head_ref);``    ``(head_ref) = new_node;``    ``return` `head_ref;``}` `// Driver code``public` `static` `void` `main(String args[])``{``    ``/* Start with the empty list */``    ``Node head = ``null``;` `    ``/* Use push() function to con``    ``the below list 8 . 23 . 11 . 29 . 12 */``    ``head = push(head, ``12``);``    ``head = push(head, ``29``);``    ``head = push(head, ``11``);``    ``head = push(head, ``23``);``    ``head = push(head, ``8``);` `    ``printAlternateNode(head);``}``}` `// This code is contributed by Arnab Kundu`

## Python3

 `# Python3 code to print Alternate Nodes` `# Link list node``class` `Node :``    ` `    ``def` `__init__(``self``, data ``=` `None``) :``        ``self``.data ``=` `data``        ``self``.``next` `=` `None``    ` `    ``# Function to push node at head``    ``def` `push(``self``, data) :``        ` `        ``new ``=` `Node(data)``        ``new.``next` `=` `self``        ``return` `new``    ` `    ``# Function to get the alternate``    ``# nodes of the linked list    ``    ``def` `printAlternateNode(``self``) :``        ``head ``=` `self``        ` `        ``while` `head ``and` `head.``next` `!``=` `None` `:``            ` `            ``print``(head.data, end ``=` `" "``)``            ``head ``=` `head.``next``.``next`  `# Driver Code       ``node ``=` `Node()` `# Use push() function to construct``# the below list 8 -> 23 -> 11 -> 29 -> 12``node ``=` `node.push(``12``)``node ``=` `node.push(``29``)``node ``=` `node.push(``11``)``node ``=` `node.push(``23``)``node ``=` `node.push(``8``)` `node.printAlternateNode()`

## C#

 `// C# code to print Alternate Nodes``using` `System;` `class` `GFG``{``    ` `/* Link list node */``public` `class` `Node``{``    ``public` `int` `data;``    ``public` `Node next;``};` `/* Function to get the alternate``nodes of the linked list */``static` `void` `printAlternateNode( Node head)``{``    ``int` `count = 0;` `    ``while` `(head != ``null``)``    ``{` `        ``// when count is even print the nodes``        ``if` `(count % 2 == 0)``            ``Console.Write(``" {0} "``, head.data);` `        ``// count the nodes``        ``count++;` `        ``// move on the next node.``        ``head = head.next;``    ``}``}` `// Function to push node at head``static` `Node push( Node head_ref, ``int` `new_data)``{``    ``Node new_node = ``new` `Node();``    ``new_node.data = new_data;``    ``new_node.next = (head_ref);``    ``(head_ref) = new_node;``    ``return` `head_ref;``}` `// Driver code``public` `static` `void` `Main(String []args)``{``    ``/* Start with the empty list */``    ``Node head = ``null``;` `    ``/* Use push() function to con``    ``the below list 8 . 23 . 11 . 29 . 12 */``    ``head = push(head, 12);``    ``head = push(head, 29);``    ``head = push(head, 11);``    ``head = push(head, 23);``    ``head = push(head, 8);` `    ``printAlternateNode(head);``}``}` `// This code has been contributed by 29AjayKumar`

## Javascript

 `// JavaScript code to print alternate nodes``// link list node``class Node{``    ``constructor(data){``        ``this``.data = data;``        ``this``.next = ``null``;``    ``}``}` `// function to get the alternate``// nodes of the linked list``function` `printAlternateNode(head){``    ``let count = 0;``    ``while``(head != ``null``)``    ``{``    ` `        ``// when count is even print the nodes``        ``if``(count % 2 == 0)``            ``console.log(head.data + ``" "``);``        ` `        ``// increment the count``        ``count++;``        ` `        ``// move to the next node``        ``head = head.next;``    ``}``}` `// function to push node at beginning``function` `push(head_ref, new_data){``    ``let new_node = ``new` `Node(new_data);``    ``new_node.next = head_ref;``    ``head_ref = new_node;``    ``return` `head_ref;``}` `// driver code``let head = ``null``;` `// Use push() function to construct``// the below list 8 -> 23 -> 11 -> 29 -> 12``head = push(head, 12);``head = push(head, 29);``head = push(head, 11);``head = push(head, 23);``head = push(head, 8);` `printAlternateNode(head);` `// this code is contributed by Yash Agarwal(yashagarwal2852002)`

Output

`8 11 12 `

Time Complexity : O(n)
Auxiliary Space : O(1)

Asked in : Govivace

Efficient Approach(Without using extra variable count):
Follow the below steps to solve the given problem:
1) We simply traverse the linked list but rather moving to the next node we will move next to next node at each time and print the head data.
Below is the implementation of above approach:

## C++

 `// C++ Program to print the alternates nodes``// without using count variable``#include``using` `namespace` `std;` `// link list node``struct` `Node{``    ``int` `data;``    ``Node* next;``    ``Node(``int` `data){``        ``this``->data = data;``        ``this``->next = NULL;``    ``}``};` `// function to get the alternate``// nodes of the linked list``void` `printAlternateNode(Node* head){``    ``while``(head != NULL){``        ``cout<data<<``" "``;``        ``if``(head->next != NULL){``            ``head = head->next->next;``        ``}``        ``else``{``            ``head = head->next;``        ``}``    ``}``}` `// driver program``int` `main(){``    ``Node* head = ``new` `Node(8);``    ``head->next = ``new` `Node(23);``    ``head->next->next = ``new` `Node(11);``    ``head->next->next->next = ``new` `Node(29);``    ``head->next->next->next->next = ``new` `Node(12);``    ` `    ``printAlternateNode(head);``    ``return` `0;``}` `// THIS CODE IS CONTRIBUTED BY KIRTI AGARWAL(KIRTIAGARWAL23121999)`

## Python3

 `# Python program to print the alternates node``# without using count variable``# link list node``class` `Node:``    ``def` `__init__(``self``, data):``        ``self``.data ``=` `data``        ``self``.``next` `=` `None``    ` `    ` `# function to get the alternate``# nodes of the linked list``def` `printAlternateNode(head):``    ``while``(head ``is` `not` `None``):``        ``print``(head.data, end``=``" "``)``        ``if``(head.``next` `is` `not` `None``):``            ``head ``=` `head.``next``.``next``        ``else``:``            ``head ``=` `head.``next``        `  `# driver program``head ``=` `Node(``8``)``head.``next` `=` `Node(``23``)``head.``next``.``next` `=` `Node(``11``)``head.``next``.``next``.``next` `=` `Node(``29``)``head.``next``.``next``.``next``.``next` `=` `Node(``12``)` `printAlternateNode(head)`

## Java

 `// C++ Program to print the alternates nodes``// without using count variable``public` `class` `LinkedList {``    ``Node head;``    ``// link list node``    ``static` `class` `Node {``        ``int` `data;``        ``Node next;``        ``Node(``int` `d)``        ``{``            ``data = d;``            ``next = ``null``;``        ``}``    ``}``    ``// function to get the alternate``    ``// nodes of the linked list``    ``public` `void` `printAlternateNode(Node head)``    ``{``        ``while` `(head != ``null``) {``            ``System.out.print(head.data + ``" "``);``            ``if` `(head.next != ``null``) {``                ``head = head.next.next;``            ``}``            ``else` `{``                ``head = head.next;``            ``}``        ``}``    ``}``    ``// driver program``    ``public` `static` `void` `main(String[] args)``    ``{``        ``LinkedList llist = ``new` `LinkedList();``        ``llist.head = ``new` `Node(``8``);``        ``Node second = ``new` `Node(``23``);``        ``Node third = ``new` `Node(``11``);``        ``Node fourth = ``new` `Node(``29``);``        ``Node fifth = ``new` `Node(``12``);``        ``llist.head.next = second;``        ``second.next = third;``        ``third.next = fourth;``        ``fourth.next = fifth;``        ``llist.printAlternateNode(llist.head);``    ``}``}`

## C#

 `// C# Program to print the alternates nodes``// without using count variable``using` `System;` `// link list node``public` `class` `Node {``    ``public` `int` `data;``    ``public` `Node next;``    ``public` `Node(``int` `data)``    ``{``        ``this``.data = data;``        ``this``.next = ``null``;``    ``}``}` `public` `class` `Program {``    ``// function to get the alternate``    ``// nodes of the linked list``    ``public` `static` `void` `printAlternateNode(Node head)``    ``{``        ``while` `(head != ``null``) {``            ``Console.Write(head.data + ``" "``);``            ``if` `(head.next != ``null``) {``                ``head = head.next.next;``            ``}``            ``else` `{``                ``head = head.next;``            ``}``        ``}``    ``} ``// driver program``    ``public` `static` `void` `Main()``    ``{``        ``Node head = ``new` `Node(8);``        ``head.next = ``new` `Node(23);``        ``head.next.next = ``new` `Node(11);``        ``head.next.next.next = ``new` `Node(29);``        ``head.next.next.next.next = ``new` `Node(12);` `        ``printAlternateNode(head);``    ``}``}`

## Javascript

 `// C++ Program to print the alternates nodes``// without using count variable``// link list node``class Node{``    ``constructor(data){``        ``this``.data = data;``        ``this``.next = ``null``;``    ``}``}` `// function to get the alternate``// nodes of the linked list``function` `printAlternateNode(head){``    ``while``(head != ``null``){``        ``console.log(head.data + ``" "``);``        ``if``(head.next != ``null``){``            ``head = head.next.next;``        ``}``        ``else``{``            ``head = head.next;``        ``}``    ``}``}` `// driver program``let head = ``new` `Node(8);``head.next = ``new` `Node(23);``head.next.next = ``new` `Node(11);``head.next.next.next = ``new` `Node(29);``head.next.next.next.next = ``new` `Node(12);`` ` `printAlternateNode(head);`

Output

`8 11 12 `

Time Complexity: O(N) where N is the number of nodes in the Linked List.
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up