打印链表的备用节点(迭代方法)
给定一个链表,打印链表的备用节点。
例子:
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
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
输出 :
8 11 12
时间复杂度:O(n)
辅助空间:O(1)
提问: Govivace
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。