#include <stdio.h>
#include <stdlib.h>
// Node structure
typedef struct Node {
int data;
struct Node* next;
} Node;
// Function to create a new node
Node* createNode(int value) {
Node
* newNode
= (Node
*)malloc(sizeof(Node
)); newNode->data = value;
newNode->next = NULL;
return newNode;
}
// Function to insert at the end
Node* insertEnd(Node* head, int value) {
Node* newNode = createNode(value);
if (!head) return newNode;
Node* temp = head;
while (temp->next) temp = temp->next;
temp->next = newNode;
return head;
}
// Function to reverse linked list
Node* reverse(Node* head) {
Node* prev = NULL;
Node* current = head;
Node* next = NULL;
while (current != NULL) {
next = current->next;
current->next = prev;
prev = current;
current = next;
}
return prev;
}
// Function to print linked list
void printList(Node* head) {
while (head) {
head = head->next;
}
}
int main() {
Node* head = NULL;
head = insertEnd(head, 10);
head = insertEnd(head, 20);
head = insertEnd(head, 30);
head = insertEnd(head, 40);
printList(head);
head = reverse(head);
printList(head);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCi8vIE5vZGUgc3RydWN0dXJlCnR5cGVkZWYgc3RydWN0IE5vZGUgewogICAgaW50IGRhdGE7CiAgICBzdHJ1Y3QgTm9kZSogbmV4dDsKfSBOb2RlOwoKLy8gRnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IG5vZGUKTm9kZSogY3JlYXRlTm9kZShpbnQgdmFsdWUpIHsKICAgIE5vZGUqIG5ld05vZGUgPSAoTm9kZSopbWFsbG9jKHNpemVvZihOb2RlKSk7CiAgICBuZXdOb2RlLT5kYXRhID0gdmFsdWU7CiAgICBuZXdOb2RlLT5uZXh0ID0gTlVMTDsKICAgIHJldHVybiBuZXdOb2RlOwp9CgovLyBGdW5jdGlvbiB0byBpbnNlcnQgYXQgdGhlIGVuZApOb2RlKiBpbnNlcnRFbmQoTm9kZSogaGVhZCwgaW50IHZhbHVlKSB7CiAgICBOb2RlKiBuZXdOb2RlID0gY3JlYXRlTm9kZSh2YWx1ZSk7CiAgICBpZiAoIWhlYWQpIHJldHVybiBuZXdOb2RlOwogICAgTm9kZSogdGVtcCA9IGhlYWQ7CiAgICB3aGlsZSAodGVtcC0+bmV4dCkgdGVtcCA9IHRlbXAtPm5leHQ7CiAgICB0ZW1wLT5uZXh0ID0gbmV3Tm9kZTsKICAgIHJldHVybiBoZWFkOwp9CgovLyBGdW5jdGlvbiB0byByZXZlcnNlIGxpbmtlZCBsaXN0Ck5vZGUqIHJldmVyc2UoTm9kZSogaGVhZCkgewogICAgTm9kZSogcHJldiA9IE5VTEw7CiAgICBOb2RlKiBjdXJyZW50ID0gaGVhZDsKICAgIE5vZGUqIG5leHQgPSBOVUxMOwogICAgd2hpbGUgKGN1cnJlbnQgIT0gTlVMTCkgewogICAgICAgIG5leHQgPSBjdXJyZW50LT5uZXh0OwogICAgICAgIGN1cnJlbnQtPm5leHQgPSBwcmV2OwogICAgICAgIHByZXYgPSBjdXJyZW50OwogICAgICAgIGN1cnJlbnQgPSBuZXh0OwogICAgfQogICAgcmV0dXJuIHByZXY7Cn0KCi8vIEZ1bmN0aW9uIHRvIHByaW50IGxpbmtlZCBsaXN0CnZvaWQgcHJpbnRMaXN0KE5vZGUqIGhlYWQpIHsKICAgIHdoaWxlIChoZWFkKSB7CiAgICAgICAgcHJpbnRmKCIlZCAtPiAiLCBoZWFkLT5kYXRhKTsKICAgICAgICBoZWFkID0gaGVhZC0+bmV4dDsKICAgIH0KICAgIHByaW50ZigiTlVMTFxuIik7Cn0KCmludCBtYWluKCkgewogICAgTm9kZSogaGVhZCA9IE5VTEw7CiAgICBoZWFkID0gaW5zZXJ0RW5kKGhlYWQsIDEwKTsKICAgIGhlYWQgPSBpbnNlcnRFbmQoaGVhZCwgMjApOwogICAgaGVhZCA9IGluc2VydEVuZChoZWFkLCAzMCk7CiAgICBoZWFkID0gaW5zZXJ0RW5kKGhlYWQsIDQwKTsKCiAgICBwcmludGYoIk9yaWdpbmFsIExpc3Q6ICIpOwogICAgcHJpbnRMaXN0KGhlYWQpOwoKICAgIGhlYWQgPSByZXZlcnNlKGhlYWQpOwoKICAgIHByaW50ZigiUmV2ZXJzZWQgTGlzdDogIik7CiAgICBwcmludExpc3QoaGVhZCk7CgogICAgcmV0dXJuIDA7Cn0K