Skip to content

Commit 0443611

Browse files
Merge pull request #1 from ArsiyaTasleem90250/ArsiyaTasleem90250-patch-1
Add circular linked list operations
2 parents e5dad3f + 7e9665b commit 0443611

File tree

1 file changed

+126
-0
lines changed

1 file changed

+126
-0
lines changed
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
4+
struct node {
5+
int data;
6+
struct node *next;
7+
};
8+
9+
struct node *first = NULL;
10+
struct node *last = NULL;
11+
12+
void create() {
13+
int n, i;
14+
struct node *pnode;
15+
16+
printf("Enter number of nodes: ");
17+
scanf("%d", &n);
18+
19+
printf("Enter data of each node:\n");
20+
for (i = 0; i < n; i++) {
21+
pnode = (struct node*)malloc(sizeof(struct node));
22+
if (!pnode) {
23+
printf("Memory Allocation Failed\n");
24+
return;
25+
}
26+
27+
scanf("%d", &pnode->data);
28+
29+
if (first == NULL) {
30+
first = last = pnode;
31+
} else {
32+
last->next = pnode;
33+
last = pnode;
34+
}
35+
last->next = first;
36+
}
37+
}
38+
39+
void deletenode(int k) {
40+
if (first == NULL) {
41+
printf("List Empty\n");
42+
return;
43+
}
44+
45+
struct node *p = first, *prev = last;
46+
47+
do {
48+
if (p->data == k)
49+
break;
50+
prev = p;
51+
p = p->next;
52+
} while (p != first);
53+
54+
if (p->data != k) {
55+
printf("Node not found\n");
56+
return;
57+
}
58+
59+
if (first == last && p == first) {
60+
first = last = NULL;
61+
} else if (p == first) {
62+
first = first->next;
63+
last->next = first;
64+
} else if (p == last) {
65+
last = prev;
66+
last->next = first;
67+
} else {
68+
prev->next = p->next;
69+
}
70+
71+
free(p);
72+
printf("Node Deleted\n");
73+
}
74+
75+
void traverse() {
76+
if (first == NULL) {
77+
printf("List Empty\n");
78+
return;
79+
}
80+
81+
printf("Circular Linked List: ");
82+
struct node *p = first;
83+
84+
do {
85+
printf("%d ", p->data);
86+
p = p->next;
87+
} while (p != first);
88+
89+
printf("\n");
90+
}
91+
92+
int main() {
93+
int ch, k;
94+
95+
while (1) {
96+
printf("\nMenu:\n");
97+
printf("1. Create List\n");
98+
printf("2. Delete Node\n");
99+
printf("3. Traverse\n");
100+
printf("4. Exit\n");
101+
printf("Enter choice: ");
102+
scanf("%d", &ch);
103+
104+
switch (ch) {
105+
case 1:
106+
create();
107+
break;
108+
109+
case 2:
110+
printf("Enter data to delete: ");
111+
scanf("%d", &k);
112+
deletenode(k);
113+
break;
114+
115+
case 3:
116+
traverse();
117+
break;
118+
119+
case 4:
120+
return 0;
121+
122+
default:
123+
printf("Invalid Choice\n");
124+
}
125+
}
126+
}

0 commit comments

Comments
 (0)