이 기사에서는 연결 목록이 제공됩니다. 우리의 임무는 단일 연결 리스트에서 각 노드 값을 반전시키는 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