-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTask_13_07_19.c
More file actions
121 lines (94 loc) · 1.66 KB
/
Copy pathTask_13_07_19.c
File metadata and controls
121 lines (94 loc) · 1.66 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
115
116
117
118
119
/*
Question : Implement Circular Queue using singly linked list
*/
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
struct node
{
int data;
struct node *next;
};
typedef struct node NODE;
typedef struct node *PNODE;
typedef struct node **PPNODE;
PNODE Front = NULL;
PNODE Rear = NULL;
void enQeue(PPNODE Head, int value)
{
PNODE temp, NewN;
NewN = (PNODE)malloc(sizeof(NODE));
NewN->data = value;
NewN->next = NULL;
if(*Head == NULL)
{
*Head = Front = Rear = NewN;
Rear->next = Front;
}
else
{
Rear->next = NewN;
Rear = Rear->next;
Rear->next = Front;
}
}
void deQueue(PPNODE Head)
{
if(*Head == NULL)
{
printf("\nQueue is empty...!\n");
return ;
}
if(*Head == Rear)
{
free(*Head);
*Head = NULL;
printf("Delete the Front element\n");
return ;
}
*Head = (*Head)->next;
free(Front);
Front = *Head;
Rear->next = *Head;
printf("\nDelete the Front element\n");
}
void display(PNODE Head)
{
if(Head == NULL)
{
printf("\nQueue is empty...!\n");
return ;
}
PNODE temp = Head;
printf("\n\n");
do
{
printf("%d-->",temp->data);
temp = temp->next;
}while(temp != Head);
printf("NULL\n\n");
}
int main()
{
PNODE First = NULL;
int choice, value;
do
{
printf("\n\ncase 1: enQueue : Insert an element\ncase 2: deQueue : Delete an element\n");
printf("case 3: Dispaly\ncase 4: Exit\n");
printf("Enter the choices\n");
scanf("%d",&choice);
switch(choice)
{
case 1: printf("Enter the element\n");
scanf("%d",&value);
enQeue(&First, value);
break;
case 2: deQueue(&First);
break;
case 3: display(First);
break;
case 4: exit(0);
}
}while(1);
}