使用递归以 C++ 打印链表的交替节点


链表是一种线性数据结构,它将元素存储在非连续的内存位置。每个元素都包含一个指向链表中下一个元素的指针。

示例

在此问题中,我们给定一个链表,我们需要打印此链表的元素,但仅打印交替元素。我们举一个例子来更好地理解问题,

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 

更新于: 03-Jan-2020

160 次浏览

开启您的职业

完成课程即可获得认证

开始
广告