Skip to content

Commit f7cc99c

Browse files
Merge pull request #301 from sesha3113/master
added singly linked list
2 parents cdb64d5 + 769c680 commit f7cc99c

File tree

1 file changed

+234
-0
lines changed

1 file changed

+234
-0
lines changed
+234
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,234 @@
1+
#include<stdio.h>
2+
#include<conio.h>
3+
#include<process.h>
4+
5+
struct node
6+
{
7+
int data;
8+
struct node *next;
9+
}*start=NULL,*q,*t;
10+
11+
int main()
12+
{
13+
int ch;
14+
void insert_beg();
15+
void insert_end();
16+
int insert_pos();
17+
void display();
18+
void delete_beg();
19+
void delete_end();
20+
int delete_pos();
21+
22+
while(1)
23+
{
24+
printf("\n\n---- Singly Linked List(SLL) Menu ----");
25+
printf("\n1.Insert\n2.Display\n3.Delete\n4.Exit\n\n");
26+
printf("Enter your choice(1-4):");
27+
scanf("%d",&ch);
28+
29+
switch(ch)
30+
{
31+
case 1:
32+
printf("\n---- Insert Menu ----");
33+
printf("\n1.Insert at beginning\n2.Insert at end\n3.Insert at specified position\n4.Exit");
34+
printf("\n\nEnter your choice(1-4):");
35+
scanf("%d",&ch);
36+
37+
switch(ch)
38+
{
39+
case 1: insert_beg();
40+
break;
41+
case 2: insert_end();
42+
break;
43+
case 3: insert_pos();
44+
break;
45+
case 4: exit(0);
46+
default: printf("Wrong Choice!!");
47+
}
48+
break;
49+
50+
case 2: display();
51+
break;
52+
53+
case 3: printf("\n---- Delete Menu ----");
54+
printf("\n1.Delete from beginning\n2.Delete from end\n3.Delete from specified position\n4.Exit");
55+
printf("\n\nEnter your choice(1-4):");
56+
scanf("%d",&ch);
57+
58+
switch(ch)
59+
{
60+
case 1: delete_beg();
61+
break;
62+
case 2: delete_end();
63+
break;
64+
case 3: delete_pos();
65+
break;
66+
case 4: exit(0);
67+
default: printf("Wrong Choice!!");
68+
}
69+
break;
70+
case 4: exit(0);
71+
default: printf("Wrong Choice!!");
72+
}
73+
}
74+
return 0;
75+
}
76+
77+
void insert_beg()
78+
{
79+
int num;
80+
t=(struct node*)malloc(sizeof(struct node));
81+
printf("Enter data:");
82+
scanf("%d",&num);
83+
t->data=num;
84+
85+
if(start==NULL) //If list is empty
86+
{
87+
t->next=NULL;
88+
start=t;
89+
}
90+
else
91+
{
92+
t->next=start;
93+
start=t;
94+
}
95+
}
96+
97+
void insert_end()
98+
{
99+
int num;
100+
t=(struct node*)malloc(sizeof(struct node));
101+
printf("Enter data:");
102+
scanf("%d",&num);
103+
t->data=num;
104+
t->next=NULL;
105+
106+
if(start==NULL) //If list is empty
107+
{
108+
start=t;
109+
}
110+
else
111+
{
112+
q=start;
113+
while(q->next!=NULL)
114+
q=q->next;
115+
q->next=t;
116+
}
117+
}
118+
119+
int insert_pos()
120+
{
121+
int pos,i,num;
122+
if(start==NULL)
123+
{
124+
printf("List is empty!!");
125+
return 0;
126+
}
127+
128+
t=(struct node*)malloc(sizeof(struct node));
129+
printf("Enter data:");
130+
scanf("%d",&num);
131+
printf("Enter position to insert:");
132+
scanf("%d",&pos);
133+
t->data=num;
134+
135+
q=start;
136+
for(i=1;i<pos-1;i++)
137+
{
138+
if(q->next==NULL)
139+
{
140+
printf("There are less elements!!");
141+
return 0;
142+
}
143+
144+
q=q->next;
145+
}
146+
147+
t->next=q->next;
148+
q->next=t;
149+
return 0;
150+
}
151+
152+
void display()
153+
{
154+
if(start==NULL)
155+
{
156+
printf("List is empty!!");
157+
}
158+
else
159+
{
160+
q=start;
161+
printf("The linked list is:\n");
162+
while(q!=NULL)
163+
{
164+
printf("%d->",q->data);
165+
q=q->next;
166+
}
167+
}
168+
}
169+
170+
void delete_beg()
171+
{
172+
if(start==NULL)
173+
{
174+
printf("The list is empty!!");
175+
}
176+
else
177+
{
178+
q=start;
179+
start=start->next;
180+
printf("Deleted element is %d",q->data);
181+
free(q);
182+
}
183+
}
184+
185+
void delete_end()
186+
{
187+
if(start==NULL)
188+
{
189+
printf("The list is empty!!");
190+
}
191+
else
192+
{
193+
q=start;
194+
while(q->next->next!=NULL)
195+
q=q->next;
196+
197+
t=q->next;
198+
q->next=NULL;
199+
printf("Deleted element is %d",t->data);
200+
free(t);
201+
}
202+
}
203+
204+
int delete_pos()
205+
{
206+
int pos,i;
207+
208+
if(start==NULL)
209+
{
210+
printf("List is empty!!");
211+
return 0;
212+
}
213+
214+
printf("Enter position to delete:");
215+
scanf("%d",&pos);
216+
217+
q=start;
218+
for(i=1;i<pos-1;i++)
219+
{
220+
if(q->next==NULL)
221+
{
222+
printf("There are less elements!!");
223+
return 0;
224+
}
225+
q=q->next;
226+
}
227+
228+
t=q->next;
229+
q->next=t->next;
230+
printf("Deleted element is %d",t->data);
231+
free(t);
232+
233+
return 0;
234+
}

0 commit comments

Comments
 (0)