C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で単一リンクリストを循環リンクリストに変換する


このチュートリアルでは、単一リンクリストを循環リンクリストに変換するプログラムについて説明します。

このために、単一リンクリストが提供されます。私たちのタスクは、そのリストの要素を取得して、循環リンクリストに変換することです。

#include <bits/stdc++.h>
//node structure of linked list
struct Node {
   int data;
   struct Node* next;
};
//converting singly linked list
//to circular linked list
struct Node* circular(struct Node* head){
   struct Node* start = head;
   while (head->next != NULL)
      head = head->next;
   //assigning start to the head->next node
   //if head->next points to NULL
   head->next = start;
   return start;
}
void push(struct Node** head, int data){
   //creation of new node
   struct Node* newNode = (struct Node*)malloc
   (sizeof(struct Node));
   //putting data in new node
   newNode->data = data;
   newNode->next = (*head);
   (*head) = newNode;
}
//displaying the elements of circular linked list
void print_list(struct Node* node){
   struct Node* start = node;
   while (node->next != start) {
      printf("%d ", node->data);
      node = node->next;
   }
   printf("%d ", node->data);
}
int main(){
   struct Node* head = NULL;
   push(&head, 15);
   push(&head, 14);
   push(&head, 13);
   push(&head, 22);
   push(&head, 17);
   circular(head);
   printf("Display list: \n");
   print_list(head);
   return 0;
}

出力

Display list:
17 22 13 14 15

  1. C++の循環リンクリストのノードの合計

    この問題では、循環リンクリストが表示されます。私たちのタスクは、循環リンクリストのノードの合計を見つけるプログラムを作成することです。 リンクリストのすべてのノード値を追加するだけです。 いくつかの重要な定義 リンクリストは一連のデータ構造であり、リンクを介して相互に接続されています。 循環リンクリストは、最初の要素が最後の要素を指し、最後の要素が最初の要素を指すリンクリストのバリエーションです。単一リンクリストと二重リンクリストの両方を循環リンクリストにすることができます。 では、問題を理解するために例を見てみましょう。 入力 14 ->

  2. C++の循環リンクリストでノードをカウントします

    ノードを含む循環リンクリストが与えられ、タスクは循環リンクリストに存在するノードの数を計算することです。 循環リンクリストは、最初の要素が最後の要素を指し、最後の要素が最初の要素を指すリンクリストのバリエーションです。単一リンクリストと二重リンクリストの両方を循環リンクリストにすることができます。 以下のプログラムでは、単一リンクリストを循環リンクリストとして実装し、その中のノード数を計算しています。 例 Input − nodes-: 20, 1, 2, 3, 4, 5 Output − count of nodes are-: 6 Input &minus