Insertion deletion ds lab
Insert at front
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node* next;
struct Node* prev;
} Node;
Node* createNode(int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
newNode->prev = NULL;
return newNode;
}
void printList(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("n");
}
void insertOne(Node** head, int data, int index) {
Node* newNode = createNode(data);
if (index == 0) {
newNode->next = *head;
if (*head != NULL) {
(*head)->prev = newNode;
}
*head = newNode;
return;
}
Node* temp = *head;
int currentIndex = 0;
while (temp != NULL && currentIndex < index - 1) {
temp = temp->next;
currentIndex++;
}
if (temp == NULL) {
free(newNode);
printf("Index out of bounds. Inserting at the end instead.n");
return;
}
newNode->next = temp->next;
newNode->prev = temp;
if (temp->next != NULL) {
temp->next->prev = newNode;
}
temp->next = newNode;
}
void freeList(Node** head) {
Node* current = *head;
Node* nextNode;
while (current != NULL) {
nextNode = current->next;
free(current);
current = nextNode;
}
*head = NULL;
}
int main() {
Node* head = NULL;
printf("Doubly linked list after inserting at end: ");
printList(head);
insertOne(&head, 20, 1);
printf("After inserting 20 at index 1: ");
printList(head);
insertOne(&head, 50, 0);
printf("After inserting 50 at index 0: ");
printList(head);
insertOne(&head, 60, 10);
printf("After attempting to insert 60 at index 10: ");
printList(head);
freeList(&head);
return 0;
Comments
Post a Comment