Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C 단일 연결 목록에서 각 노드 값을 반전시키는 프로그램

<시간/>

이 기사에서는 연결 목록이 제공됩니다. 우리의 임무는 단일 연결 리스트에서 각 노드 값을 반전시키는 C 프로그램을 만드는 것입니다.

연결 목록의 각 노드를 가져와서 값을 반전시킵니다.

연결 목록 다른 링크에 연결된 항목을 포함하는 링크 시퀀스입니다.

문제를 이해하기 위해 예를 들어보겠습니다.

입력

34 12 89 56 72

출력

43 21 98 65 27

이 문제를 해결하기 위해 단일 연결 목록을 탐색하고 각 노드를 가져옵니다. 그리고 현재 노드의 값을 반대로 합니다.

Singly Linked List의 각 노드 값을 반전시키는 프로그램

// Singly Linked List의 각 노드 값을 반대로 하는 프로그램

예시

#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