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

Popular posts from this blog

Create and Insert data in circular linked list

Week2

Week13