#include #include #include struct Node { struct Node *ptr; int data; }; struct Node *head = NULL; struct Node *createNode(int v) { struct Node *new = (struct Node *)malloc(sizeof(struct Node)); new->data = v; new->ptr = NULL; return new; } void insertend(int v, struct Node *new) { if (head == NULL) { head = new; return; } struct Node *temp = head; while (temp->ptr != NULL) { temp = temp->ptr; } temp->ptr = new; new->ptr = NULL; } void insertstart(int v, struct Node *new) { struct Node *temp = head; head = new; new->ptr = temp; } void insert(int v, struct Node *new, int x) { struct Node *temp = head; int w = 0; while (temp->ptr != NULL && w < x) { temp = temp->ptr; w++; } struct Node *temp2 = temp->ptr; temp->ptr = new; new->ptr = temp2; } void display() { struct Node *temp = head; while (temp != NULL) { printf("%d \n", temp->data); temp = temp->ptr; } } void deletestart() { if (head == NULL) { printf("list empty"); return; } struct Node *temp = head; head = temp->ptr; free(temp); } void deletelast() { if (head == NULL) { printf("list empty"); return; } else { struct Node *temp = head; struct Node *prev = NULL; while (temp->ptr != NULL) { prev = temp; temp = temp->ptr; } prev->ptr = NULL; free(temp); } } void deletex(int x) { if (head == NULL) { printf("list empty"); return; } else { struct Node *temp = head; struct Node *prev = NULL; int k = 0; while (temp->ptr != NULL && k < x - 1) { prev = temp; temp = temp->ptr; k++; } // If x is beyond the last node if (temp == NULL) { printf("Position %d not found\n", x); return; } prev->ptr = temp->ptr; free(temp); } } int main() { struct Node *first = createNode(5); insertstart(5, first); display(); struct Node *second = createNode(6); insertend(6, second); display(); deletelast(); display(); }