打印链表的备用节点(迭代法)

给定一个链表,打印链表的备用节点。

null

例如:

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

方法: 1.遍历整个链表。 2.设置计数=0。 3.计数为偶数时打印节点。 4.访问下一个节点。

C++

// CPP code to print Alternate Nodes
#include <iostream>
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 <stdio.h>
#include <stdlib.h>
/* 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


输出:

8  11  12

时间复杂度:O(n) 辅助空间:O(1)

请进来 :Govivace

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享