#include<stdio.h>
#include<stdlib.h>
typedef struct Node {
    int data;
    struct Node* next;
} Node;
void insert(Node** head, int data){
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->data = data;
    newNode->next = *head;
    *head = newNode;
}
void deleteNode(Node** head, int value){
    if(*head == NULL) return;
    if((*head)->data == value){
        Node*temp = *head;
        *head - (*head)->next;
        free(temp);
        return;
    }
    Node* current = *head;
    while(current->next){
        if(current->next->data == value){
            Node* temp = current->next;
            current->next = current->next->next;
            free(temp);
            return;
        }
        current = current->next;
    }
}
void printlist(Node* head){
    while(head){
        printf("%d ", head->data);
        head = head->next;
    }
    printf("\n");
}
int main(){
    Node* head = NULL;
    insert(&head, 50);
    insert(&head, 40);
    insert(&head, 30);
    insert(&head, 20);
    insert(&head, 10);
    printf("Original List: ");
    printList(head);
    deleteNode(&head, 30);
    printf("List after deletion: ");
    printList(head);
    return 0;
}