使用遞迴以 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 次瀏覽

開啟您的職業

完成課程即可獲得認證

開始
廣告
© . All rights reserved.