Computer >> Máy Tính >  >> Lập trình >> lập trình C

C Chương trình đảo ngược từng giá trị nút trong Danh sách liên kết đơn

Trong bài viết này, chúng tôi được cung cấp một danh sách liên kết. Nhiệm vụ của chúng ta là tạo một chương trình C để đảo ngược từng giá trị nút trong danh sách được liên kết đơn lẻ.

Chúng tôi sẽ lấy từng nút của danh sách được liên kết và đảo ngược giá trị.

Danh sách được liên kết là một chuỗi các liên kết chứa các mục được liên kết với một liên kết khác.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào

34 12 89 56 72

Đầu ra

43 21 98 65 27

Để giải quyết vấn đề này, chúng tôi sẽ duyệt qua danh sách được liên kết đơn lẻ và lấy từng nút. Và sau đó đảo ngược giá trị của nút hiện tại.

Chương trình đảo ngược từng giá trị nút trong Danh sách liên kết Singly

// Chương trình đảo ngược từng giá trị nút trong Danh sách liên kết Singly.

Ví dụ

#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;
}

Đầu ra

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