Datastructure Practical - 4
Datastructure Practical - 4
DATA STRUCTURE(CE317)
Tutorial 4
R.K. UNIVERSITY 1
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
Output :
R.K. UNIVERSITY 2
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
R.K. UNIVERSITY 3
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
1. Design a data structure singly linked list with necessary members. Also implement
operations on linked list (insert at first, insert at last, insert in between and delete
from first, last and between, search, display).
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void insertAtBeginning(int);
void insertAtEnd(int);
void insertBetween(int,int,int);
void display();
void removeBeginning();
void removeEnd();
void removeSpecific(int);
struct Node
int data;
}*head = NULL;
void main()
int choice,value,choice1,loc1,loc2;
while(1){
R.K. UNIVERSITY 4
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
scanf("%d",&choice);
switch(choice)
scanf("%d",&value);
while(1){
scanf("%d",&choice1);
switch(choice1)
case 1: insertAtBeginning(value);
break;
case 2: insertAtEnd(value);
break;
case 3: printf("Enter the two values where you wanto insert: ");
scanf("%d%d",&loc1,&loc2);
insertBetween(value,loc1,loc2);
break;
goto mainMenu;
R.K. UNIVERSITY 5
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
goto subMenuEnd;
subMenuEnd:
break;
case 2: display();
break;
case 3:
scanf("%d",&choice1);
switch(choice1)
case 1: removeBeginning();
break;
case 2: removeEnd();
break;
scanf("%d",&loc2);
removeSpecific(loc2);
break;
goto mainMenu;
break;
R.K. UNIVERSITY 6
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
case 4: exit(0);
newNode->data = value;
if(head == NULL)
newNode->next = NULL;
head = newNode;
else
newNode->next = head;
head = newNode;
R.K. UNIVERSITY 7
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
newNode->data = value;
newNode->next = NULL;
if(head == NULL)
head = newNode;
else
while(temp->next != NULL)
temp = temp->next;
temp->next = newNode;
newNode->data = value;
if(head == NULL)
R.K. UNIVERSITY 8
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
newNode->next = NULL;
head = newNode;
else
temp = temp->next;
newNode->next = temp->next;
temp->next = newNode;
void removeBeginning()
if(head == NULL)
printf("\n\nList is Empty!!!");
else
if(head->next == NULL)
head = NULL;
R.K. UNIVERSITY 9
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
free(temp);
else
head = temp->next;
free(temp);
void removeEnd()
if(head == NULL)
printf("\nList is Empty!!!\n");
else
if(head->next == NULL)
head = NULL;
else
R.K. UNIVERSITY 10
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
while(temp1->next != NULL)
temp2 = temp1;
temp1 = temp1->next;
temp2->next = NULL;
free(temp1);
while(temp1->data != delValue)
temp2 = temp1;
R.K. UNIVERSITY 11
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
free(temp1);
void display()
if(head == NULL)
printf("\nList is Empty\n");
else
while(temp->next != NULL)
printf("%d --->",temp->data);
temp = temp->next;
printf("%d --->NULL",temp->data);
R.K. UNIVERSITY 12
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
Output :
R.K. UNIVERSITY 13
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
R.K. UNIVERSITY 14
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
R.K. UNIVERSITY 15
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
2. Develop a data structure circular singly linked list with necessary members. Also
implement operations on circular linked list (insert at first, insert at last, insert in
between and delete from first, last and between, search, display).
#include<stdio.h>
#include<stdlib.h>
struct node
int data;
};
void randominsert();
void begin_delete();
void last_delete();
void random_delete();
void display();
void search();
void main ()
R.K. UNIVERSITY 16
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
while(choice != 7)
printf("\n*********Main Menu*********\n");
printf("\n===============================================\n");
scanf("\n%d",&choice);
switch(choice)
case 1:
beginsert();
break;
case 2:
lastinsert();
break;
case 3:
begin_delete();
break;
case 4:
last_delete();
break;
case 5:
R.K. UNIVERSITY 17
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
search();
break;
case 6:
display();
break;
case 7:
exit(0);
break;
default:
void beginsert()
int item;
if(ptr == NULL)
printf("\nOVERFLOW");
else
R.K. UNIVERSITY 18
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
scanf("%d",&item);
if(head == NULL)
head = ptr;
else
temp = head;
while(temp->next != head)
temp = temp->next;
ptr->next = head;
head = ptr;
printf("\nnode inserted\n");
void lastinsert()
R.K. UNIVERSITY 19
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
int item;
if(ptr == NULL)
printf("\nOVERFLOW\n");
else
printf("\nEnter Data?");
scanf("%d",&item);
ptr->data = item;
if(head == NULL)
head = ptr;
else
temp = head;
R.K. UNIVERSITY 20
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
printf("\nnode inserted\n");
void begin_delete()
if(head == NULL)
printf("\nUNDERFLOW");
head = NULL;
free(head);
printf("\nnode deleted\n");
else
{ ptr = head;
R.K. UNIVERSITY 21
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
ptr->next = head->next;
free(head);
head = ptr->next;
printf("\nnode deleted\n");
void last_delete()
if(head==NULL)
printf("\nUNDERFLOW");
head = NULL;
free(head);
printf("\nnode deleted\n");
else
R.K. UNIVERSITY 22
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
ptr = head;
preptr=ptr;
ptr = ptr->next;
free(ptr);
printf("\nnode deleted\n");
void search()
int item,i=0,flag=1;
ptr = head;
if(ptr == NULL)
printf("\nEmpty List\n");
else
R.K. UNIVERSITY 23
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
scanf("%d",&item);
flag=0;
else
if(ptr->data == item)
flag=0;
break;
else
flag=1;
i++;
R.K. UNIVERSITY 24
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
if(flag != 0)
void display()
ptr=head;
if(head == NULL)
printf("\nnothing to print");
else
R.K. UNIVERSITY 25
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
R.K. UNIVERSITY 26
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
Output :
R.K. UNIVERSITY 27
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
R.K. UNIVERSITY 28
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
R.K. UNIVERSITY 29
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
R.K. UNIVERSITY 30
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
3. Demonstrate a data structure doubly linked list with necessary members. Also
implement operations on doubly linked list (insert at first, insert at last, insert in
between and delete from first, last and between, search, display).
#include<stdio.h>
#include<stdlib.h>
struct node
int data;
};
void insertion_beginning();
void insertion_last();
void insertion_specified();
void deletion_beginning();
void deletion_last();
void deletion_specified();
void display();
void search();
void main ()
while(choice != 9)
printf("\n*********Main Menu*********\n");
R.K. UNIVERSITY 31
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
printf("\n===============================================\n");
scanf("\n%d",&choice);
switch(choice)
case 1:
insertion_beginning();
break;
case 2:
insertion_last();
break;
case 3:
insertion_specified();
break;
case 4:
deletion_beginning();
break;
case 5:
deletion_last();
break;
case 6:
deletion_specified();
R.K. UNIVERSITY 32
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
break;
case 7:
search();
break;
case 8:
display();
break;
case 9:
exit(0);
break;
default:
void insertion_beginning()
int item;
if(ptr == NULL)
printf("\nOVERFLOW");
else
R.K. UNIVERSITY 33
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
scanf("%d",&item);
if(head==NULL)
ptr->next = NULL;
ptr->prev=NULL;
ptr->data=item;
head=ptr;
else
ptr->data=item;
ptr->prev=NULL;
ptr->next = head;
head->prev=ptr;
head=ptr;
printf("\nNode inserted\n");
void insertion_last()
R.K. UNIVERSITY 34
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
int item;
if(ptr == NULL)
printf("\nOVERFLOW");
else
printf("\nEnter value");
scanf("%d",&item);
ptr->data=item;
if(head == NULL)
ptr->next = NULL;
ptr->prev = NULL;
head = ptr;
else
temp = head;
while(temp->next!=NULL)
temp = temp->next;
temp->next = ptr;
R.K. UNIVERSITY 35
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
ptr ->prev=temp;
ptr->next = NULL;
printf("\nnode inserted\n");
void insertion_specified()
int item,loc,i;
if(ptr == NULL)
printf("\n OVERFLOW");
else
temp=head;
scanf("%d",&loc);
for(i=0;i<loc;i++)
temp = temp->next;
if(temp == NULL)
R.K. UNIVERSITY 36
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
return;
printf("Enter value");
scanf("%d",&item);
ptr->data = item;
ptr->next = temp->next;
temp->next = ptr;
temp->next->prev=ptr;
printf("\nnode inserted\n");
void deletion_beginning()
if(head == NULL)
printf("\n UNDERFLOW");
head = NULL;
R.K. UNIVERSITY 37
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
free(head);
printf("\nnode deleted\n");
else
ptr = head;
free(ptr);
printf("\nnode deleted\n");
void deletion_last()
if(head == NULL)
printf("\n UNDERFLOW");
head = NULL;
free(head);
printf("\nnode deleted\n");
R.K. UNIVERSITY 38
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
else
ptr = head;
if(ptr->next != NULL)
free(ptr);
printf("\nnode deleted\n");
void deletion_specified()
int val;
printf("\n Enter the data after which the node is to be deleted : ");
scanf("%d", &val);
ptr = head;
printf("\nCan't delete\n");
R.K. UNIVERSITY 39
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
else
free(temp);
printf("\nnode deleted\n");
void display()
ptr = head;
while(ptr != NULL)
printf("%d\n",ptr->data);
ptr=ptr->next;
R.K. UNIVERSITY 40
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
void search()
int item,i=0,flag;
ptr = head;
if(ptr == NULL)
printf("\nEmpty List\n");
else
scanf("%d",&item);
while (ptr!=NULL)
if(ptr->data == item)
flag=0;
break;
else
flag=1;
R.K. UNIVERSITY 41
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
i++;
if(flag==1)
R.K. UNIVERSITY 42