Untitled
unknown
plain_text
a year ago
3.5 kB
2
Indexable
Never
#include <stdio.h> #include <stdlib.h> // Node structure struct Node { int data; struct Node* next; }; // Function to create a new node struct Node* createNode(int data) { struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); if (!newNode) { printf("Memory error\n"); return NULL; } newNode->data = data; newNode->next = NULL; return newNode; } // Function to insert a node at the beginning of the linked list struct Node* insertAtBeginning(struct Node* head, int data) { struct Node* newNode = createNode(data); if (newNode) { newNode->next = head; head = newNode; } return head; } // Function to insert a node at the end of the linked list struct Node* insertAtEnd(struct Node* head, int data) { struct Node* newNode = createNode(data); if (!head) { return newNode; } struct Node* temp = head; while (temp->next != NULL) { temp = temp->next; } temp->next = newNode; return head; } // Function to insert a node at a specific position in the linked list struct Node* insertAtPosition(struct Node* head, int data, int position) { struct Node* newNode = createNode(data); if (position == 1) { newNode->next = head; head = newNode; } else { struct Node* temp = head; for (int i = 1; i < position - 1 && temp != NULL; ++i) { temp = temp->next; } if (temp == NULL) { printf("Invalid position\n"); free(newNode); } else { newNode->next = temp->next; temp->next = newNode; } } return head; } // Function to print the linked list void printList(struct Node* head) { struct Node* temp = head; while (temp != NULL) { printf("%d ", temp->data); temp = temp->next; } printf("\n"); } // Main function for testing the linked list insertion int main() { struct Node* head = NULL; int choice, data, position; do { printf("1. Insert at the beginning\n"); printf("2. Insert at the end\n"); printf("3. Insert at a specific position\n"); printf("4. Print the list\n"); printf("5. Exit\n"); printf("Enter your choice: "); scanf("%d", &choice); switch (choice) { case 1: printf("Enter data to insert: "); scanf("%d", &data); head = insertAtBeginning(head, data); break; case 2: printf("Enter data to insert: "); scanf("%d", &data); head = insertAtEnd(head, data); break; case 3: printf("Enter data to insert: "); scanf("%d", &data); printf("Enter position: "); scanf("%d", &position); head = insertAtPosition(head, data, position); break; case 4: printf("Linked list: "); printList(head); break; case 5: // Free memory before exiting while (head != NULL) { struct Node* temp = head; head = head->next; free(temp); } break; default: printf("Invalid choice\n"); } } while (choice != 5); return 0; }