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