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

C単一リンクリストの各ノード値を逆にするプログラム


この記事では、リンクリストが提供されています。私たちのタスクは、単一リンクリストの各ノード値を逆にするCプログラムを作成することです。

リンクリストの各ノードを取得し、値を逆にします。

リンクリスト 別のリンクにリンクされているアイテムを含む一連のリンクです。

問題を理解するために例を見てみましょう

入力

34 12 89 56 72

出力

43 21 98 65 27

この問題を解決するために、単一リンクリストをトラバースして各ノードを取得します。次に、現在のノードの値を逆にします。

単一リンクリストの各ノード値を逆にするプログラム

//単一リンクリストの各ノード値を逆にするようにプログラムします。

#include <stdio.h>
#include <stdlib.h>
struct Node {
   int data;
   struct Node* next;
};
struct Node* insertNode(int key) {
   struct Node* temp = new Node;
   temp->data = key;
   temp->next = NULL;
   return temp;
}
int reverseValue(int number) {
   int revElement = 0, rem;
   while (number != 0) {
      rem = number % 10;
      revElement = revElement * 10 + rem;
      number = number / 10;
   }
   return revElement;
}
void reverseLinkedListElements(struct Node* node) {
   if (node == NULL)
      return;
   while (node != NULL) {
      node->data = reverseValue(node->data);
      node = node->next;
   }
}
void printLinkedList(struct Node* node) {
   while (node != NULL) {
      printf("%d ", node->data);
      node = node->next;
   }
}
int main() {
   struct Node* head = NULL;
   head = insertNode(34);
   head->next = insertNode(12);
   head->next->next = insertNode(89);
   head->next->next->next = insertNode(56);
   head->next->next->next->next = insertNode(72);
   printf("Orignal Linked List :\t");
   printLinkedList(head);
   reverseLinkedListElements(head);
   printf("\nAltered Linked List:\t");
   printLinkedList(head);
   return 0;
}

出力

Orignal Linked List : 34 12 89 56 72
Altered Linked List: 43 21 98 65 27

  1. 単一リンクリストのノードの積

    n個のノードがある場合、タスクは、単一リンクリストのすべてのノードの積を出力することです。プログラムは、最初のノードからNULLが見つからなくなるまで、単一リンクリストのすべてのノードをトラバースする必要があります。 例 Input -: 1 2 3 4 5 Output -: 120 上記の例では、最初のノードから開始して、すべてのノードがトラバースされます。つまり、1、2、3、4、5、6であり、それらの積は1 * 2 * 3 * 4 * 5 * 6 =120 以下で使用するアプローチは次のとおりです 一時的なポインタ、たとえばノードタイプの温度を取得します この一時ポインタを、

  2. 実際にC言語で反転せずに、リンクリストの反転を印刷します

    タスクは、再帰関数を使用して、指定されたリンクリストの逆を印刷することです。プログラムは逆に印刷する必要がありますが、リストを逆にしないでください。つまり、ノードの順序は同じままです。 ここで、プログラムは、リストの最後のノードに格納されているNULLが調べられ、ヘッドノードのデータが出力されるまで、最初のノードのアドレスを含むヘッドポインタを次のノードに移動します。 例 Input: 29 34 43 56 Output: 56 43 34 29 まず、ノードがリストに挿入され、挿入されたノードを指すポインターが開始されます。最終リストが作成された後、一時ポインタが最初のノードポイ