1.
//program for array implementation of queue
#include<stdio.h>
#include<conio.h>
#define MAX 5
int q[MAX],r=-1,f=-1;
void insert();
void del();
void disp();
void main()
{
int i=1,choice;
clrscr();
while(i==1)
{
printf("\n1. Insert \n2. Delete \n3. Display");
printf("\nEnter your choice:");
scanf("%d",&choice);
switch(choice)
{
case 1:
insert();
break;
case 2:
del();
break();
case 3:
disp();
break;
default:
printf("\nChoice is wrong:");
} //end switch
printf("\nContinue 1 for yes:");
scanf("%d",&i);
} //end while
getch();
} //end main
//insert function
void insert()
{
int item;
if(r==MAX-1)
printf("\nQueue is full");
else
{
if(f==-1)
f=0;
printf("\nEnter item to insert:");
scanf("%d",&item);
r++;
q[r]=item;
}
}
//delete function
void del()
{
int item;
if(f==-1)
printf("\nqueue empty");
else
{
if(r==f) //last element
{
item=q[f];
printf("\nDeleted element is:%d",item);
r=f=-1;
}
else
{
item=q[f];
printf("\nDeleted element is:%d",item);
f++;
}
}
}
//display function
void disp()
{
int i;
printf("\n");
if(f==-1)
printf("\nQueue empty");
else
{
for(i=f;i<=r;i++)
printf("%d\t",q[i]);
}
}
Output:
7. //program for circular queue
#include<stdio.h>
#include<conio.h>
#define MAX 5
int q[MAX],r=-1,f=-1;
void insert();
void del();
void disp();
void main()
{
int i=1,choice;
clrscr();
while(i==1)
{
printf("\n1. Insert \n2. Delete \n3. Display");
printf("\nEnter your choice:");
scanf("%d",&choice);
switch(choice)
{
case 1:
insert();
break;
case 2:
del();
break;
case 3:
disp();
break;
default:
printf("\nChoice is wrong:");
} //end switch
printf("\nContinue 1 for yes:");
scanf("%d",&i);
} //end while
getch();
} //end main
//insert function
void insert()
{
int item;
if((f==0 && r==MAX-1)||(r==f-1))
printf("\nQueue is full");
else
{
if(f==-1)
f=r=0;
else
if(f!=0 && r==MAX-1)
r=0;
else
r++;
printf("\nEnter item to insert:");
scanf("%d",&item);
q[r]=item;
}
}
//delete function
void del()
{
int item;
if(f==-1)
printf("\nqueue empty");
else
{
if(r==f) //last element
{
item=q[f];
printf("\nDeleted element is:%d",item);
r=f=-1;
}
else
if(f==MAX-1)
{
item=q[f];
printf("\nDeleted element is:%d",item);
f=0;
}
else
{
item=q[f];
printf("\nDeleted element is:%d",item);
f++;
}
}
}
//display function
void disp()
{
int i;
printf("\n");
if(f==-1)
printf("\nQueue empty");
else
if(f>r)
{
for(i=0;i<=r;i++)
printf("%d\t",q[i]);
for(i=f;i<=MAX-1;i++)
printf("%d\t",q[i]);
}
else
{
for(i=f;i<=r;i++)
printf("%d\t",q[i]);
}
}
8. //Program for singly linked list
#include<stdio.h>
#include<conio.h>
#define NULL 0
struct list
{
int info;
struct list *next;
};
typedef struct list node;
node *start,*temp,*temp1,*newnode;
void create(); //function for the creation of linked list
void insert_b(); //insert new node at the beginning
void insert_e(); //insert new node at the end
void insert_p(); //insert new node in between two nodes
void del_f(); //delete first node
void del_l(); //delete last node
void del_m(); //delete intermediate node
void disp(); //display linked list
void main()
{
int i=1,choice;
clrscr();
while(i==1)
{
printf("\n1. Create\n2. Insert at Beg\n3. Insert at Pos\n4. insert at end");
printf("\n5. Del first \n6. Del last \n7. Del intermedate \n8. Display");
printf("\nEnter your choice:");
scanf("%d",&choice);
switch(choice)
{
case 1:
create();
break;
case 2:
insert_b();
break;
case 3:
insert_p();
break;
case 4:
insert_e();
break;
case 5:
del_f();
break;
case 6:
del_l();
break;
case 7:
del_m();
break;
case 8:
disp();
break;
default:
printf("\nChoice is wrong");
}
printf("\nContinue 1 for yes");
scanf("%d",&i);
}
}
//function for the creation of linked list
void create()
{ start
int k=1; newnode
1006
start=(node *)malloc(sizeof(node)); Info next
newnode=start; 25
do
{
printf("Enter info new node:");
scanf("%d",&newnode->info);
printf("More node 1 for yes:");
scanf("%d",&k);
if(k==1)
{
newnode->next=(node *)malloc(sizeof(node));
newnode=newnode->next;
}
start
1006
Info next
25 1010 50 0
else newnode
newnode->next=NULL;
}while(k==1);
}
//function to insert node at the beginning
void insert_b()
{
//allocate space for new node
newnode=(node *)malloc(sizeof(node)); newnode 1018
printf("Enter info for new node:"); Info next
scanf("%d",&newnode->info); 45
newnode->next=start; start
start=newnode; 1018
}
45 1006 25 1010 50 0
//function to insert node at the end
void insert_e()
{
//allocate space for new node newnode
newnode=(node *)malloc(sizeof(node)); 1020
printf("Enter info for new node:"); Info next
scanf("%d",&newnode->info); 28 0
newnode->next=NULL;
temp=start; start
while(temp->next!=NULL) 1018
temp=temp->next; temp
temp->next=newnode; 45 1006 25 1010 50 0
}
temp temp
start
1018
45 1006 25 1010 50 1020 28 0
//function to insert node at particular position
void insert_p()
{
int t;
//allocate space for new node newnode
newnode=(node *)malloc(sizeof(node)); 1022
printf("Enter info for new node:");
scanf("%d",&newnode->info); 33
printf("\nEnter info of target node:");
scanf("%d",&t); temp1
temp=start; 1006
while(temp->next!=NULL)
start
{
if(temp->next->info==t) 1018 temp
break; 45 1006 25 1010 50 0
else
temp=temp->next;
}
temp1=temp->next;
temp->next=newnode;
newnode->next=temp1;
}
start 1018
45 1022 33 1006 25 1010 50 0
//function to delete first node
void del_f()
{
if(start->next==NULL) //last node
{
printf("\nDeleted node:%d",start->info);
start=NULL;
}
else
{
temp=start;
printf("\nDeleted node:%d",temp->info);
temp=temp->next;
start=temp;
}
}
start
temp 1018
45 1022 33 1006 25 1010 50 0
start
1022
33 1006 25 1010 50 0
//function to delete last node
void del_l()
{
if(start->next==NULL) //last node
{
printf("\nDeleted node:%d",start->info);
start=NULL;
}
else
{
temp=start;
while(temp->next->next!=NULL)
temp=temp->next;
printf("\nDeleted node:%d",temp->next->info);
temp->next=NULL;
}
}
temp
start 1018
temp
45 1022 33 1006 25 1010 50 0
temp
start 1018
45 1022 33 1006 25 0
//function to delete intermediate node
void del_m()
{
int item;
temp=start;
printf("\nWhich node to be deleted:");
scanf("%d",&item);
while(temp->next->next!=NULL)
{
if(temp->next->info==item)
{
printf("\nDeleted element is:%d",temp->next->info);
temp->next=temp->next->next;
break;
}
temp=temp->next;
}
}
temp
start 1018
45 1022 33 1006 25 1010 50 0
temp
start
1018
45 1022 33 1010 50 0
//function to display linked list
void disp()
{
temp=start;
printf("\n");
while(temp->next!=NULL)
{
printf("%d\t",temp->info);
temp=temp->next;
}
printf("%d",temp->info);
}
temp
start 1018
45 1022 33 1010 50 0
10. //Program for circular linked list
#include<stdio.h>
#include<conio.h>
#define NULL 0
struct list
{
int info;
struct list *next;
};
typedef struct list node;
node *start,*temp,*temp1,*newnode;
void create(); //function for the creation of linked list
void insert_b(); //insert new node at the beginning
void insert_e(); //insert new node at the end
void insert_p(); //insert new node at the position
void del_f(); //delete first node
void del_l(); //delete last node
void del_m(); //delete intermediate node
void disp(); //display linked list
void main()
{
int i=1,choice;
clrscr();
while(i==1)
{
printf("\n1. Create\n2. Insert at Beg\n3. Insert at Pos\n4. insert at end");
printf("\n5. Del first \n6. Del last \n7. Del intermediate \n8. Display");
printf("\nEnter your choice:");
scanf("%d",&choice);
switch(choice)
{
case 1:
create();
break;
case 2:
insert_b();
break;
case 3:
insert_p();
break;
case 4:
insert_e();
break;
case 5:
del_f();
break;
case 6:
del_l();
break;
case 7:
del_m();
break;
case 8:
disp();
break;
default:
printf("\nChoice is wrong");
}
printf("\nContinue 1 for yes");
scanf("%d",&i);
}
}
//function for the creation of linked list
void create()
{
int k=1;
start=(node *)malloc(sizeof(node));
newnode=start;
do
{
printf("Enter info new node:");
scanf("%d",&newnode->info);
printf("More node 1 for yes:");
scanf("%d",&k);
if(k==1)
{
newnode->next=(node *)malloc(sizeof(node)); start
newnode=newnode->next; 1018
newnode
}
45
start
newnode 1018
else 45 1010 55 1018
newnode->next=start;
}while(k==1);
//function to insert node at the beginning
void insert_b() start
{ 1018
//allocate space for new node
newnode=(node *)malloc(sizeof(node)); 45 1010 45 1018
printf("Enter info for new node:");
scanf("%d",&newnode->info);
newnode->next=start;
newnode
temp=start; 1026
while(temp->next!=start)
91
temp=temp->next;
start=newnode;
temp->next=start; temp
} start 1018
45 1010 45 1018
newnode 1026
91
temp
//function to insert node at the end start 1018
void insert_e()
{ 45 1010 45 1018
//allocate space for new node
newnode=(node *)malloc(sizeof(node));
printf("Enter info for new node:");
newnode
scanf("%d",&newnode->info); 1026
newnode->next=start;
91
temp=start;
while(temp->next!=start)
temp=temp->next;
temp->next=newnode;
}
//function to insert node at particular position
void insert_p()
{
int t;
//allocate space for new node
newnode=(node *)malloc(sizeof(node));
printf("Enter info for new node:");
scanf("%d",&newnode->info);
printf("\nEnter info of target node:");
scanf("%d",&t);
temp=start;
while(temp->next!=start)
{
if(temp->next->info==t)
break;
else
temp=temp->next;
}
temp1=temp->next;
temp->next=newnode;
newnode->next=temp1;
}
//function to delete first node
void del_f()
{
if(start->next==start) //last node
{
printf("\nDeleted node:%d",start->info);
start=NULL;
}
else
{
temp=start;
printf("\nDeleted node:%d",start->info);
while(temp->next!=start)
temp=temp->next;
start=start->next;
temp->next=start;
}
}
//function to delete last node
void del_l()
{
if(start->next==start) //last node
{
printf("\nDeleted node:%d",start->info);
start=NULL;
}
else
{
temp=start;
while(temp->next->next!=start)
temp=temp->next;
printf("\nDeleted node:%d",temp->next->info);
temp->next=start;
}
}
//function to delete intermediate node
void del_m()
{
int item;
temp=start;
printf("\nWhich node to be deleted:");
scanf("%d",&item);
while(temp->next->next!=start)
{
if(temp->next->info==item)
{
printf("\nDeleted element is:%d",temp->next->info);
temp->next=temp->next->next;
break;
}
temp=temp->next;
}
}
//function to display linked list
void disp()
{
temp=start;
printf("\n");
while(temp->next!=start)
{
printf("%d\t",temp->info);
temp=temp->next;
}
printf("%d",temp->info);
}
12. //Program for doubly linked list
#include<stdio.h>
#include<conio.h>
#define NULL 0
struct list
{
struct list *prev;
int info;
struct list *next;
};
typedef struct list node;
node *start,*last,*temp,*temp1,*newnode;
void create(); //function for the creation of linked list
void insert_b(); //insert new node at the beginning
void insert_e(); //insert new node at the end
void insert_p(); //insert new node at the position
void del_f(); //delete first node
void del_l(); //delete last node
void del_m(); //delete intermediate node
void disp_b(); //display from first node
void disp_l(); //display from last node
void main()
{
int i=1,choice;
clrscr();
while(i==1)
{
printf("\n1. Create\n2. Insert at Beg\n3. Insert at Pos\n4. insert at end");
printf("\n5. Del first \n6. Del last \n7. Del intermedate \n8. Display forward");
printf("\n9. Display Backward");
printf("\nEnter your choice:");
scanf("%d",&choice);
switch(choice)
{
case 1:
create();
break;
case 2:
insert_b();
break;
case 3:
insert_p();
break;
case 4:
insert_e();
break;
case 5:
del_f();
break;
case 6:
del_l();
break;
case 7:
del_m();
break;
case 8:
disp_b();
break;
case 9:
disp_l();
break;
default:
printf("\nChoice is wrong");
}
printf("\nContinue 1 for yes");
scanf("%d",&i);
}
}
//function for the creation of linked list
void create()
{
int k=1;
newnode=(node *)malloc(sizeof(node));
start=newnode;
newnode->prev=NULL;
do
{
printf("Enter info new node:");
scanf("%d",&newnode->info);
printf("More node 1 for yes:");
scanf("%d",&k);
if(k==1)
{
newnode->next=(node *)malloc(sizeof(node));
newnode->next->prev=newnode;
newnode=newnode->next;
}
else
{
newnode->next=NULL;
last=newnode;
}
}while(k==1);
}
//function to insert node at the beginning
void insert_b()
{
//allocate space for new node
newnode=(node *)malloc(sizeof(node));
printf("Enter info for new node:");
scanf("%d",&newnode->info);
newnode->prev=NULL;
newnode->next=start;
start->prev=newnode;
start=newnode;
}
//function to insert node at the end
void insert_e()
{
//allocate space for new node
newnode=(node *)malloc(sizeof(node));
printf("Enter info for new node:");
scanf("%d",&newnode->info);
newnode->next=NULL;
newnode->prev=last;
last->next=newnode;
last=newnode;
}
//function to insert node at particular position
void insert_p()
{
int t;
//allocate space for new node
newnode=(node *)malloc(sizeof(node));
printf("Enter info for new node:");
scanf("%d",&newnode->info);
printf("\nEnter info of target node:");
scanf("%d",&t);
temp=start;
while(temp->next!=NULL)
{
if(temp->next->info==t)
break;
else
temp=temp->next;
}
if(temp->next==NULL)
printf("\nNode not fund");
else
{
newnode->next=temp->next;
newnode->prev=temp;
temp->next->prev=newnode;
temp->next=newnode;
}
}
//function to delete first node
void del_f()
{
if(start->next==NULL) //last node
{
printf("\nDeleted node:%d",start->info);
start=NULL;
}
else
{
temp=start->next;
printf("\nDeleted node:%d",start->info);
temp->prev=NULL;
start=temp;
}
}
//function to delete last node
void del_l()
{
if(start->next==NULL) //last node
{
printf("\nDeleted node:%d",start->info);
start=NULL;
}
else
{
temp=last->prev;
printf("\nDeleted node:%d",last->info);
temp->next=NULL;
last=temp;
}
}
//function to delete intermediate node
void del_m()
{
int item;
temp=start;
printf("\nWhich node to be deleted:");
scanf("%d",&item);
while(temp->next->next!=NULL)
{
if(temp->next->info==item)
{
printf("\nDeleted element is:%d",temp->next->info);
temp->next=temp->next->next;
temp->next->prev=temp;
break;
}
temp=temp->next;
}
}
//function to display linked list forward
void disp_b()
{
temp=start;
printf("\n");
while(temp->next!=NULL)
{
printf("%d\t",temp->info);
temp=temp->next;
}
printf("%d",temp->info);
}
//function to display linked list backward
void disp_l()
{
temp=last;
printf("\n");
while(temp->prev!=NULL)
{
printf("%d\t",temp->info);
temp=temp->prev;
}
printf("%d",temp->info);
}
//Program for singly linked list
#include<stdio.h>
#include<conio.h>
#define NULL 0
struct list
{
int info;
struct list *next;
};
typedef struct list node;
node *start,*temp,*temp1,*newnode;
void create(); //function for the creation of linked list
void insert_b(); //insert new node at the beginning
void insert_e(); //insert new node at the end
void insert_p(); //insert new node at the position
void del_f(); //delete first node
void del_l(); //delete last node
void del_m(); //delete intermediate node
void disp(); //display linked list
void rev(); //function to reverse linked list
void main()
{
int i=1,choice;
clrscr();
while(i==1)
{
printf("\n1. Create\n2. Insert at Beg\n3. Insert at Pos\n4. insert at end");
printf("\n5. Del first \n6. Del last \n7. Del intermedate \n8. Display");
printf("\n9. Reverse");
printf("\nEnter your choice:");
scanf("%d",&choice);
switch(choice)
{
case 1:
create();
break;
case 2:
insert_b();
break;
case 3:
insert_p();
break;
case 4:
insert_e();
break;
case 5:
del_f();
break;
case 6:
del_l();
break;
case 7:
del_m();
break;
case 8:
disp();
break;
case 9:
rev();
break;
default:
printf("\nChoice is wrong");
}
printf("\nContinue 1 for yes");
scanf("%d",&i);
}
}
//function for the creation of linked list
void create()
{
int k=1;
start=(node *)malloc(sizeof(node));
newnode=start;
do
{
printf("Enter info new node:");
scanf("%d",&newnode->info);
printf("More node 1 for yes:");
scanf("%d",&k);
if(k==1)
{
newnode->next=(node *)malloc(sizeof(node));
newnode=newnode->next;
}
else
newnode->next=NULL;
}while(k==1);
}
//function to insert node at the beginning
void insert_b()
{
//allocate space for new node
newnode=(node *)malloc(sizeof(node));
printf("Enter info for new node:");
scanf("%d",&newnode->info);
newnode->next=start;
start=newnode;
}
//function to insert node at the end
void insert_e()
{
//allocate space for new node
newnode=(node *)malloc(sizeof(node));
printf("Enter info for new node:");
scanf("%d",&newnode->info);
newnode->next=NULL;
temp=start;
while(temp->next!=NULL)
temp=temp->next;
temp->next=newnode;
}
//function to insert node at particular position
void insert_p()
{
int t;
//allocate space for new node
newnode=(node *)malloc(sizeof(node));
printf("Enter info for new node:");
scanf("%d",&newnode->info);
printf("\nEnter info of target node:");
scanf("%d",&t);
temp=start;
while(temp->next!=NULL)
{
if(temp->next->info==t)
break;
else
temp=temp->next;
}
temp1=temp->next;
temp->next=newnode;
newnode->next=temp1;
}
//function to delete first node
void del_f()
{
if(start->next==NULL) //last node
{
printf("\nDeleted node:%d",start->info);
start=NULL;
}
else
{
temp=start;
printf("\nDeleted node:%d",temp->info);
temp=temp->next;
start=temp;
}
}
//function to delete last node
void del_l()
{
if(start->next==NULL) //last node
{
printf("\nDeleted node:%d",start->info);
start=NULL;
}
else
{
temp=start;
while(temp->next->next!=NULL)
temp=temp->next;
printf("\nDeleted node:%d",temp->next->info);
temp->next=NULL;
}
}
//function to delete intermediate node
void del_m()
{
int item;
temp=start;
printf("\nWhich node to be deleted:");
scanf("%d",&item);
while(temp->next->next!=NULL)
{
if(temp->next->info==item)
{
printf("\nDeleted element is:%d",temp->next->info);
temp->next=temp->next->next;
break;
}
temp=temp->next;
}
}
//function for reversing linked list
void rev()
{
node *pnode,*cnode;
pnode=start;
cnode=start->next;
start=pnode->next;
if(start==NULL)
printf("\nOnly one node in list");
else
{
pnode->next=NULL;
while(start!=NULL)
{
start=start->next;
cnode->next=pnode;
pnode=cnode;
cnode=start;
}
start=pnode;
}
}
//function to display linked list
void disp()
{
temp=start;
printf("\n");
while(temp->next!=NULL)
{
printf("%d\t",temp->info);
temp=temp->next;
}
printf("%d",temp->info);
}
14. //Program for Header linked list
#include<stdio.h>
#include<conio.h>
#define NULL 0
struct list
{
int info;
struct list *next;
};
typedef struct list node;
node *start,*temp,*temp1,*newnode;
void create(); //function for the creation of linked list
void insert_b(); //insert new node at the beginning
void insert_e(); //insert new node at the end
void insert_p(); //insert new node at the position
void del_f(); //delete first node
void del_l(); //delete last node
void del_m(); //delete intermediate node
void disp(); //display linked list
int count=0;
void main()
{
int i=1,choice;
clrscr();
while(i==1)
{
printf("\n1. Create\n2. Insert at Beg\n3. Insert at Pos\n4. insert at end");
printf("\n5. Del first \n6. Del last \n7. Del intermedate \n8. Display");
printf("\nEnter your choice:");
scanf("%d",&choice);
switch(choice)
{
case 1:
create();
break;
case 2:
insert_b();
break;
case 3:
insert_p();
break;
case 4:
insert_e();
break;
case 5:
del_f();
break;
case 6:
del_l();
break;
case 7:
del_m();
break;
case 8:
disp();
break;
default:
printf("\nChoice is wrong");
}
printf("\nContinue 1 for yes");
scanf("%d",&i);
}
}
//function for the creation of linked list
void create()
{
int k=1;
start=(node *)malloc(sizeof(node));
newnode=start;
while(k==1)
{
newnode->next=(node *)malloc(sizeof(node));
newnode=newnode->next;
count++;
printf("Enter info new node:");
scanf("%d",&newnode->info);
printf("More node 1 for yes:");
scanf("%d",&k);
if(k!=1)
{
newnode->next=NULL;
start->info=count;
break;
}
}
}
//function to insert node at the beginning
void insert_b()
{
//allocate space for new node
newnode=(node *)malloc(sizeof(node));
printf("Enter info for new node:");
scanf("%d",&newnode->info);
newnode->next=start->next;
start->next=newnode;
start->info=++count;
}
//function to insert node at the end
void insert_e()
{
//allocate space for new node
newnode=(node *)malloc(sizeof(node));
printf("Enter info for new node:");
scanf("%d",&newnode->info);
newnode->next=NULL;
temp=start->next;
while(temp->next!=NULL)
temp=temp->next;
temp->next=newnode;
start->info=++count;
}
//function to insert node at particular position
void insert_p()
{
int t;
//allocate space for new node
newnode=(node *)malloc(sizeof(node));
printf("Enter info for new node:");
scanf("%d",&newnode->info);
printf("\nEnter info of target node:");
scanf("%d",&t);
temp=start;
while(temp->next!=NULL)
{
if(temp->next->info==t)
break;
else
temp=temp->next;
}
temp1=temp->next;
temp->next=newnode;
newnode->next=temp1;
start->info=++count;
}
//function to delete first node
void del_f()
{
temp=start->next;
if(temp->next==NULL) //last node
{
printf("\nDeleted node:%d",temp->info);
start->next=NULL;
}
else
{
printf("\nDeleted node:%d",temp->info);
temp=temp->next;
start->next=temp;
}
start->info=--count;
}
//function to delete last node
void del_l()
{
temp=start->next;
if(temp->next==NULL) //last node
{
printf("\nDeleted node:%d",temp->info);
start->next=NULL;
}
else
{
while(temp->next->next!=NULL)
temp=temp->next;
printf("\nDeleted node:%d",temp->next->info);
temp->next=NULL;
}
start->info=--count;
}
//function to delete intermediate node
void del_m()
{
int item;
temp=start->next;
printf("\nWhich node to be deleted:");
scanf("%d",&item);
while(temp->next->next!=NULL)
{
if(temp->next->info==item)
{
printf("\nDeleted element is:%d",temp->next->info);
temp->next=temp->next->next;
break;
}
temp=temp->next;
}
start->info=--count;
}
//function to display linked list
void disp()
{
temp=start;
printf("\n");
while(temp->next!=NULL)
{
printf("%d\t",temp->info);
temp=temp->next;
}
printf("%d",temp->info);
}