forked from Anjalitripathi0024/Data-Structure
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path5_Circular_queue_linked.c
More file actions
114 lines (108 loc) · 2.63 KB
/
5_Circular_queue_linked.c
File metadata and controls
114 lines (108 loc) · 2.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include<stdio.h>
#include<stdlib.h>
struct node
{ int data;
struct node *nxt;
}*ptr,*rear=NULL;
void insert()
{ int dt;
ptr=(struct node *)malloc(sizeof(struct node));
if(ptr==NULL)
{ printf("\n -----------------------------------------------");
printf("\n Overflow !!!");
}
else
{ if(rear==NULL)
{ printf("\n\n Enter Data : ");
scanf("%d",&dt);
ptr->data=dt;
rear=ptr;
ptr->nxt=rear;
}
else
{ printf("\n\n Enter Data : ");
scanf("%d",&dt);
ptr->data=dt;
ptr->nxt=rear->nxt;
rear->nxt=ptr;
rear=ptr;
}
printf("\n -----------------------------------------------");
printf("\n Data inserted successfully.");
}
printf("\n -----------------------------------------------");
}
void deletehead()
{ printf("\n -----------------------------------------------");
if(rear==NULL)
{ printf("\n C-Queue is EMPTY !!!"); }
else
{ if(rear->nxt==rear)
{ ptr=rear;
rear=NULL;
}
else
{ ptr=rear->nxt;
rear->nxt=(rear->nxt)->nxt;
}
printf("\n Deleted successfully.");
}
printf("\n -----------------------------------------------");
}
void displayqueue()
{ struct node *p;
int i=1;
printf("\n -----------------------------------------------");
if(rear==NULL)
{ printf("\n C-Queue is EMPTY !!!"); }
else
{ p=rear->nxt;
do
{ printf("\n Node %d : %d",i,p->data);
p=p->nxt;
i++;
}while(p!=rear->nxt);
}
printf("\n -----------------------------------------------");
}
int calcount()
{ int i=0;
struct node *p;
if(rear==NULL)
{ i=0; }
else
{ p=rear->nxt;
do
{ p=p->nxt;
i++;
}while(p!=rear->nxt);
}
return i;
}
int main()
{ int c=0,d,count=0;
do
{ count=calcount();
printf("\n\n -: Linked List Circualar Queue Menu :-");
printf("\n\n 1. Enter Data ----------");
printf("\n 2. Display Queue | Status |");
printf("\n 3. Delete Head | (%d/NA) |",count);
printf("\n 4. Quit ----------");
printf("\n\n Enter choice number : ");
scanf("%d",&c);
switch(c)
{ case 1 : insert();
break;
case 2 : displayqueue();
break;
case 3 : deletehead();
break;
case 4 : break;
default : printf("\n --------------------------------------------------------");
printf("\n Invalid input !!!");
printf("\n --------------------------------------------------------");
}
}while(c!=4);
printf("\n\nPress any key to EXIT...");
return 0;
}