Dounliy Linked List Help For Asignment
Dounliy Linked List Help For Asignment
#include <stdio.h>
#include <stdlib.h>
struct node {
int data;
}*head, *last;
void displayList();
int main()
int n, data;
head = NULL;
last = NULL;
printf("\nEnter the total number of nodes in list : "); // Input the number of nodes
scanf("%d", &n);
createList(n);
displayList();
search_element(data);
return 0;
void createList(int n)
int i, data;
if(n >= 1)
scanf("%d", &data);
head->data = data;
last = head;
scanf("%d", &data);
newNode->data = data;
newNode->next = NULL;
last->next = newNode; // Link previous node with the new node
}}}
void displayList()
int n = 1;
if(head == NULL)
printf("\nList is empty.\n");
else
temp = head;
while(temp != NULL)
printf("%d\t", temp->data);
n++;
temp = temp->next;
}}}
int pos = 0;
while(temp != NULL)
printf("\n\nThe element %d is at index %d in the list", data,pos); //If found, print and exit
exit(0);
else
pos++;
* C Program to Implement a Doubly Linked List & provide Insertion, Deletion & Display Operations
*/
#include <stdio.h>
#include <stdlib.h>
struct node
{
int n;
}*h,*temp,*temp1,*temp2,*temp4;
void insert1();
void insert2();
void insert3();
void traversebeg();
void traverseend(int);
void sort();
void search();
void update();
void delete();
int count = 0;
void main()
int ch;
h = NULL;
printf("\n 10 - Exit");
while (1)
scanf("%d", &ch);
switch (ch)
case 1:
insert1();
break;
case 2:
insert2();
break;
case 3:
insert3();
break;
case 4:
delete();
break;
case 5:
traversebeg();
break;
case 6:
temp2 = h;
if (temp2 == NULL)
else
traverseend(temp2->n);
break;
case 7:
search();
break;
case 8:
sort();
break;
case 9:
update();
break;
case 10:
exit(0);
default:
void create()
int data;
temp->prev = NULL;
temp->next = NULL;
scanf("%d", &data);
temp->n = data;
count++;
/* TO insert at beginning */
void insert1()
{
if (h == NULL)
create();
h = temp;
temp1 = h;
else
create();
temp->next = h;
h->prev = temp;
h = temp;
/* To insert at end */
void insert2()
if (h == NULL)
create();
h = temp;
temp1 = h;
}
else
create();
temp1->next = temp;
temp->prev = temp1;
temp1 = temp;
void insert3()
int pos, i = 2;
scanf("%d", &pos);
temp2 = h;
return;
{
printf("\n Empty list cannot insert other than 1st position");
return;
create();
h = temp;
temp1 = h;
return;
else
temp2 = temp2->next;
i++;
create();
temp->prev = temp2;
temp->next = temp2->next;
temp2->next->prev = temp;
temp2->next = temp;
}
/* To delete an element */
void delete()
int i = 1, pos;
scanf("%d", &pos);
temp2 = h;
return;
if (h == NULL)
return;
else
temp2 = temp2->next;
i++;
}
if (i == 1)
if (temp2->next == NULL)
free(temp2);
temp2 = h = NULL;
return;
if (temp2->next == NULL)
temp2->prev->next = NULL;
free(temp2);
return;
temp2->next->prev = temp2->prev;
if (i != 1)
if (i == 1)
h = temp2->next;
free(temp2);
}
count--;
void traversebeg()
temp2 = h;
if (temp2 == NULL)
return;
temp2 = temp2->next;
if (temp2 != NULL)
i = temp2->n;
temp2 = temp2->next;
traverseend(i);
void search()
temp2 = h;
if (temp2 == NULL)
return;
scanf("%d", &data);
if (temp2->n == data)
return;
else
temp2 = temp2->next;
count++;
void update()
scanf("%d", &data);
scanf("%d", &data1);
temp2 = h;
if (temp2 == NULL)
{
printf("\n Error : List empty no node to update");
return;
if (temp2->n == data)
temp2->n = data1;
traversebeg();
return;
else
temp2 = temp2->next;
void sort()
int i, j, x;
temp2 = h;
temp4 = h;
if (temp2 == NULL)
return;
x = temp2->n;
temp2->n = temp4->n;
temp4->n = x;
traversebeg();