Skip to content

Commit 64a0893

Browse files
authored
ReverseSinglyLL.c div-bargali#162
ReverseSinglyLL.c div-bargali#162
2 parents 3eefc0a + 30e59d1 commit 64a0893

File tree

1 file changed

+92
-0
lines changed

1 file changed

+92
-0
lines changed
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
#include<stdio.h>
2+
#include<stdlib.h>
3+
struct node
4+
{
5+
int info;
6+
struct node *link;
7+
};
8+
typedef struct node NODE;
9+
NODE *currptr,*start=NULL,*lastptr,*newnode;
10+
int count=1;
11+
NODE* getnode(int value)
12+
{
13+
NODE *newnode=(NODE *)malloc(sizeof(NODE));
14+
if(newnode==NULL)
15+
{
16+
printf("Memory not alloted\n");
17+
return (0);
18+
}
19+
else
20+
{
21+
newnode->info=value;
22+
newnode->link=NULL;
23+
return(newnode);
24+
}
25+
}
26+
void insert_beg()
27+
{
28+
int item;
29+
printf("Enter the value to be inserted:");
30+
scanf("%d", &item);
31+
newnode=getnode(item);
32+
if(start==NULL)
33+
{start=newnode;
34+
newnode->link=NULL;
35+
}
36+
else
37+
{
38+
newnode->link=start;
39+
start=newnode;
40+
}
41+
42+
}
43+
void reverse()
44+
{
45+
int temp;
46+
currptr=start;
47+
lastptr=start;
48+
while(lastptr->link!=NULL)
49+
{
50+
lastptr=lastptr->link;
51+
count++;
52+
}
53+
int i,j;
54+
for(i=0;i<count-1;i++)
55+
{
56+
for(j=0;j<count-i-1;j++)
57+
{
58+
temp=currptr->info;
59+
currptr->info=currptr->link->info;
60+
currptr->link->info=temp;
61+
62+
63+
currptr=currptr->link;
64+
}
65+
currptr=start;
66+
}
67+
}
68+
void display()
69+
{
70+
if(start==NULL)
71+
printf("NO nodes to display\n");
72+
for(currptr=start;currptr!=NULL;currptr=currptr->link)
73+
printf("%d",currptr->info);
74+
}
75+
void main()
76+
{
77+
int c;
78+
do{
79+
80+
printf("Enter choice\n");
81+
scanf("%d", &c);
82+
switch(c)
83+
{
84+
85+
86+
case 1:insert_beg();break;
87+
case 2:reverse();break;
88+
case 3:display();break;
89+
}
90+
}while(c!=4);
91+
92+
}

0 commit comments

Comments
 (0)