Week 2 Dslab
Week 2 Dslab
(UGC AUTONOMOUS)
*Approved by AICTE *Affiliated to JNTUH * NAAC Accredited with A+ GRADE
Kandlakoya(V), Medchal Road, Hyderabad, Telangana-501401.
Website: www.cmrcet.ac.in
SOURCE CODE:
#include<stdio.h>
#include<stdlib.h>
void create();
void display();
void insert_begin();
void insert_end();
void insert_random();
void delete_begin();
void delete_end();
void delete_random();
struct node
{
int data;
struct node *next;
};
struct node *head=NULL;
int main()
{
int opt;
while(1)
{
printf("\n \t MENU");
printf("\n 1.create");
printf("\n 2.display");
printf("\n 3.Insert at begin");
printf("\n 4.Insert at end");
printf("\n 5.Insert at random");
printf("\n 6.Delete at begin");
void display()
{
struct node *temp;
temp=head;
if(head==NULL)
printf("\n List is empty");
else
{
printf("\n list is ");
while(temp!=NULL)
{
printf("-->%d",temp->data);
temp=temp->next;
}
}
}
void insert_begin()
{
int val;
struct node *newnode;
newnode=(struct node*)malloc(sizeof(struct node));
printf("enter the value to insert");
scanf("%d",&val);
newnode->data=val;
newnode->next=NULL;
if(head==NULL)
head=newnode;
else
{
newnode->next=head;
head=newnode;
}
}
void insert_end()
{
int val;
struct node *newnode,*temp;
newnode=(struct node*)malloc(sizeof(struct node)) ;
printf("enter the value to insert");
scanf("%d",&val);
newnode->data=val;
newnode->next=NULL;
if(head==NULL)
head=newnode;
else
{
temp=head;
while(temp->next!=NULL)
temp=temp->next;
temp->next=newnode;
}
}
void insert_random()
{
int val,pos,i;
struct node *newnode,*temp;
newnode=(struct node*)malloc(sizeof(struct node)) ;
printf("enter the value to insert");
scanf("%d",&val);
newnode->data=val;
newnode->next=NULL;
printf("enter position to insert");
scanf("%d",&pos);
if(pos==0)
insert_begin();
else
{
if(head==NULL)
{
head=newnode;
}
else
{
temp=head;
for(i=0;i<pos-1;i++)
{
temp=temp->next;
}
if(temp==NULL)
{
temp2->next=NULL;
printf("\n deleting node data is %d",temp1->data);
free(temp1);
}
}
void delete_random()
{
struct node *temp,*position;
int i=0,pos;
if(head==NULL)
printf("\n List is empty");
else
printf("enter the position where you want to delete");
scanf("%d",&pos);
position=malloc(sizeof(struct node));
temp=head;
while(i<pos-1)
{
temp=temp->next;
i++;
}
position=temp->next;
temp->next=position->next;
free(position);
}
OUTPUT:
SOURCE CODE:
#include<stdio.h>
#include<stdlib.h>
void create();
void display();
void reverse();
struct node
{
int data;
struct node *link;
};
struct node *head=NULL;
int main()
{
int opt;
while(1)
{
printf("\n \t MENU");
printf("\n 1.create");
printf("\n 2.display");
printf("\n 3.reverse");
printf("\n 4.exit");
printf("\n choose any option");
scanf("%d",&opt);
switch(opt)
{
case 1:create();break;
case 2:display();break;
case 3:reverse();break;
case 4:printf("terminated by you");exit(0);
}// end of switch
}// end of while
return 0;
}// end of main
void create()
{
int val;
struct node *newnode;
newnode=(struct node*)malloc(sizeof(struct node)) ;
printf("enter the value to insert");
scanf("%d",&val);
newnode->data=val;
newnode->link=NULL;
if(head==NULL)
head=newnode;
else
{
newnode->link=head;
head=newnode;
}
}
void display()
{
struct node *temp;
temp=head;
if(head==NULL)
printf("\n List is empty");
else
{
printf("\n list is ");
while(temp!=NULL)
{
printf("-->%d",temp->data);
temp=temp->link;
}
}
}
void reverse()
{
struct node *prev,*current,*next;
prev=NULL;
current=next=head;
if(head==NULL)
printf("list is empty");
else
{
while(next!=NULL)
{
next=next->link;
current->link=prev;
prev=current;
current=next;
}
head=prev;
}
}
OUTPUT:
6.AIM:C program to implement various operations of double linked list and following operations
i. Creation
ii. Insertion
iii. Deletion
iv. Traversal
SOURCE CODE:
#include<stdio.h>
#include<stdlib.h>
void create();
void display();
void insert_begin();
void insert_end();
void insert_random();
void delete_begin();
void delete_end();
void delete_random();
struct node
{
int data;
struct node *next,*prev;
};
struct node *head=NULL;
int main()
{
int opt;
while(1)
{
printf("\n \t MENU");
printf("\n 1.create");
printf("\n 2.display");
printf("\n 3.Insert at begin");
printf("\n 4.Insert at end");
printf("\n 5.Insert at random");
printf("\n 6.Delete at begin");
printf("\n 7.Delete at end");
printf("\n 8.Delete at random");
printf("\n 9.exit");
newnode->next=head;
head->prev=newnode;
head=newnode;
}
}
}
void display()
{
struct node *temp;
temp=head;
if(head==NULL)
printf("\n List is empty");
else
{
printf("\n list is ");
while(temp!=NULL)
{
printf("-->%d",temp->data);
temp=temp->next;
}
}
}
void insert_begin()
{
int val;
struct node *newnode;
newnode=(struct node*)malloc(sizeof(struct node));
printf("enter the value to insert");
scanf("%d",&val);
newnode->data=val;
newnode->next=NULL;
newnode->prev=NULL;
if(head==NULL)
head=newnode;
else
{
newnode->next=head;
newnode->prev=NULL;
head->prev=newnode;
head=newnode;
}
}
void insert_end()
{
int val;
struct node *newnode,*temp;
newnode=(struct node*)malloc(sizeof(struct node));
printf("Enter value to insert:");
scanf("%d",&val);
newnode->data=val;
newnode->next=NULL;
newnode->prev=NULL;
if(head==NULL)
{
head=newnode;
}
else
{
temp=head;
while(temp->next!=NULL)
{
temp=temp->next;
}
temp->next=newnode;
newnode->prev=temp;
newnode->next=NULL;
}
}
void insert_random()
{
int val,i,pos;
struct node *newnode,*temp;
newnode=(struct node*)malloc(sizeof(struct node)) ;
printf("enter the value to insert");
scanf("%d",&val);
newnode->data=val;
newnode->next=NULL;
newnode->prev=NULL;
printf("enter position to insert");
scanf("%d",&pos)
if(pos==NULL)
{
head=newnode;
}
else
{
temp=head;
for(i=1;i<pos-1;i++)
{
temp=temp->next;
}
if(temp==NULL)
{
printf("\n position is out of scope");
}
else
{
newnode->next=temp->next;
newnode->prev=temp;
temp->next=newnode;
}
}
}
void delete_begin()
{
struct node *temp;
if(head==NULL)
{
printf("LIST IS EMPTY");
}
else
{
temp=head;
head=head->next;
head->prev=NULL;
free(temp);
}
}
void delete_end()
{
struct node *temp1,*temp2;
if(head==NULL)
{
printf("LIST IS EMPTY");
}
else
{
temp1=head;
while(temp1->next!=NULL)
{
temp2=temp1;
temp1=temp1->next;
}
temp1->prev=NULL;
temp2->next=NULL;
free(temp1);
}
}
void delete_random()
{
struct node *temp;
int pos,i=1;
printf("Enter position of node to delete:");
scanf("%d",&pos);
if(temp==head)
{
head=head->next;
head->prev=NULL;
free(temp);
}
else
{
temp=head;
while(i<pos)
{
temp=temp->next;
i++;
}
temp->prev->next=temp->next;
temp->next->prev=temp->prev;
free(temp);
}
}
OUTPUT:
temp=ptr;
temp->next=head;
}
}
}
void insert_begin()
{
struct node *temp,*ptr;
int num;
ptr=(struct node*)malloc(sizeof(struct node));
printf("enter data");
scanf("%d",&num);
ptr->data=num;
if(head==NULL)
{
head=ptr;
ptr->next=head;
}
else
{
temp=head;
if(temp->next==head)
{
temp->next=ptr;
ptr->next=temp;
}
else
{
while(temp->next!=head)
{
temp=temp->next;
}
ptr->next=head;
head=ptr;
temp->next=head;
}
}
}
void insert_end()
{
struct node *ptr,*temp;
int num;
ptr=(struct node*)malloc(sizeof(struct node));
printf("enter data");
scanf("%d",&num);
ptr->data=num;
if(head==NULL)
{
head=ptr;
ptr->next=head;
}
else
{
temp=head;
if(temp->next==head)
{
temp->next=ptr;
ptr->next=temp;
}
else
{
while(temp->next!=head)
{
temp=temp->next;
}
temp->next=ptr;
ptr->next=head;
}
}
}
void insert_random()
{
struct node *ptr;
int pos,i=1,num;
ptr=(struct node*)malloc(sizeof(struct node));
printf("enter data");
scanf("%d",&num);
ptr->data=num;
{
temp=temp->next;
}
head=temp1->next;
temp->next=head;
printf("Deleted element is %d",temp1->data);
free(temp1);
}
}
}
void delete_end()
{
if(head==NULL)
{
printf("list is empty");
}
else
{
struct node *temp1,*temp;
temp=head;
if(temp->next==head)
{
head==NULL;
printf("Deleted element is %d",temp->data);
free(temp);
}
else
{
while(temp->next!=head)
{
temp1=temp;
temp=temp->next;
}
temp1->next=head;
printf("deleted element is %d",temp->data);
free(temp);
}
}
}
void delete_random()
{
int pos,i=1;
if(head==NULL)
{
printf("list is empty");
}
else
{
struct node *temp,*t;
temp=head;
printf("enter position to delete");
scanf("%d",&pos);
if(temp->next==NULL)
{
head=NULL;
printf("deleted element is %d",temp->data);
free(temp);
}
else
{
while(i<pos-1)
{
temp=temp->next;
i++;
}
t=temp->next;
temp->next=t->next;
t->next=NULL;
printf("deleted element is %d",t->data);
free(t);
}
}
}
void display()
{
if(head==NULL)
{
printf("list is empty");
}
else
{
struct node *temp;
temp=head;
printf("The linked list is:\n");
while(temp->next!=head)
{
printf("%d->",temp->data);
temp=temp->next;
}
printf("%d",temp->data);
}
}
OUTPUT: