DSA LAB FILE Assignment[1]
DSA LAB FILE Assignment[1]
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
};
newNode->next = *head;
*head = newNode;
newNode->next =
NULL; if (*head ==
NULL) {
*head = newNode;
return;
temp->next = newNode;
if (position == 0)
{ newNode->next =
*head;
*head = newNode;
return;
{ temp = temp->next;
newNode->next = temp-
>next; temp->next =
newNode;
*head = (*head)-
>next; free(temp);
}
if (temp->next == NULL) {
*head = NULL;
free(temp);
return;
temp = temp->next;
free(temp->next);
temp->next =
NULL;
if (position == 0) {
*head = temp-
>next; free(temp);
return;
{ temp = temp->next;
}
temp->next = temp->next->next;
free(deleteNode);
// Search an element
{ int position = 0;
temp = temp->next;
position++;
next = current-
>next; current->next
= prev; prev =
current; current =
next;
}
*head = prev;
mergedHead = head1;
} else {
mergedHead = head2;
return mergedHead;
temp = temp->next;
printf("NULL\n");
}
// Main function
int main() {
insertAtBeginning(&head, 10);
insertAtEnd(&head, 20);
displayList(head);
deleteFromBeginning(&head);
deleteFromEnd(&head);
displayList(head);
if (position != -1) {
} else {
reverseList(&head);
n"); displayList(head);
return 0;
}
Doubly Linked List
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node*
prev; struct
Node* next;
};
newNode->prev = NULL;
newNode->next =
*head; if (*head !=
NULL) {
(*head)->prev = newNode;
*head = newNode;
newNode->next = NULL;
if (*head == NULL)
{ newNode->prev =
NULL;
*head = newNode;
return;
temp = temp->next;
temp->next =
newNode; newNode-
>prev = temp;
if (position == 0) {
insertAtBeginning(head, data);
return;
{ temp = temp->next;
newNode->next = temp-
>next; newNode->prev =
temp;
if (temp->next != NULL) {
temp->next->prev = newNode;
temp->next = newNode;
*head = (*head)-
>next; if (*head !=
NULL) {
(*head)->prev = NULL;
free(temp);
if (temp->next == NULL) {
*head = NULL;
free(temp);
return;
{ temp = temp->next;
temp->prev->next = NULL;
free(temp);
if (position == 0) {
deleteFromBeginning(head);
return;
{ temp = temp->next;
if (temp->next != NULL) {
temp->next->prev = temp->prev;
if (temp->prev != NULL) {
temp->prev->next = temp->next;
free(temp);
// Search an element
{ int position = 0;
temp = temp->next;
position++;
temp = current->prev;
current->prev = current->next;
current->next = temp;
current = current->prev;
if (temp != NULL) {
*head = temp->prev;
{ if (*head1 == NULL) {
*head1 = *head2;
return;
{ temp = temp->next;
temp->next =
*head2; if (*head2 !=
NULL) {
(*head2)->prev = temp;
printf("NULL\n");
// Main function
int main() {
// Insertion examples
insertAtBeginning(&head, 10);
insertAtEnd(&head, 20);
// Deletion examples
deleteFromBeginning(&head);
deleteFromEnd(&head);
displayList(head);
// Searching an element
if (position != -1) {
} else {
reverseList(&head);
displayList(head);
return 0;
}
Circular Singly Linked List
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
};
if (*head == NULL) {
*head = newNode;
return;
temp = temp->next;
newNode->next =
*head; temp->next =
newNode;
*head = newNode;
if (*head == NULL) {
*head = newNode;
return;
temp = temp->next;
temp->next = newNode;
newNode->next =
*head;
if (position == 0) {
insertAtBeginning(head, data);
return;
{ temp = temp->next;
newNode->next = temp->next;
temp->next = newNode;
*head = NULL;
free(temp);
return;
last = last->next;
*head = (*head)-
>next; last->next =
*head; free(temp);
*head = NULL;
free(temp);
return;
}
prev = temp;
temp = temp->next;
prev->next = *head;
free(temp);
if (position == 0) {
deleteFromBeginning(head);
return;
{ prev = temp;
temp = temp->next;
if (temp == *head)
return; prev->next =
temp->next; free(temp);
// Search an element
int searchElement(struct Node* head, int key) {
int position = 0;
do {
temp = temp->next;
position++;
struct Node *prev = NULL, *current = *head, *next = NULL, *tail = *head;
do {
next = current-
>next; current->next
= prev; prev =
current; current =
next;
*head = prev;
{ if (*head1 == NULL) {
*head1 = *head2;
return;
temp1 = temp1->next;
temp2 = temp2->next;
temp1->next =
*head2; temp2->next
= *head1;
if (head == NULL) {
printf("List is empty\n");
return;
do {
temp = temp->next;
printf("(head)\n");
}
// Main function
int main() {
struct Node* head = NULL; // Initialize the head of the circular list
insertAtBeginning(&head, 10);
insertAtEnd(&head, 20);
displayList(head);
deleteFromBeginning(&head);
deleteFromEnd(&head);
displayList(head);
if (position != -1) {
} else {
reverseList(&head);
displayList(head);
return 0;