Skip to content

Commit d807e15

Browse files
committed
Create 6cii.c
1 parent 2a2e077 commit d807e15

File tree

1 file changed

+108
-0
lines changed

1 file changed

+108
-0
lines changed

see_exams/6cii.c

+108
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
4+
typedef struct NODE
5+
{
6+
int d;
7+
struct NODE *right;
8+
} *node;
9+
10+
node getnode(int data)
11+
{
12+
node n = (struct NODE *)malloc(sizeof(struct NODE));
13+
n->d = data;
14+
n->right = NULL;
15+
return n;
16+
}
17+
18+
void display(node *n);
19+
void insertFront(node *n, int x);
20+
21+
void splitOddEven(node *n, node *odd, node *even);
22+
23+
int main()
24+
{
25+
node n = NULL;
26+
27+
while (1)
28+
{
29+
int choice;
30+
printf("1 - insert, 2 - display, 3 - splitOddEven : ");
31+
scanf("%d", &choice);
32+
if (choice == 1)
33+
{
34+
int data;
35+
scanf("%d", &data);
36+
insertFront(&n, data);
37+
}
38+
else if (choice == 2)
39+
{
40+
display(&n);
41+
}
42+
else if (choice == 3)
43+
{
44+
display(&n);
45+
46+
node odd = NULL;
47+
node even = NULL;
48+
49+
splitOddEven(&n, &odd, &even);
50+
51+
printf("After splitting\n");
52+
printf("Odd: ");
53+
display(&odd);
54+
printf("Even: ");
55+
display(&even);
56+
return 0;
57+
}
58+
else
59+
{
60+
return 0;
61+
}
62+
}
63+
}
64+
65+
void splitOddEven(node *n, node *odd, node *even)
66+
{
67+
if (*n == NULL)
68+
{
69+
return;
70+
}
71+
while ((*n) != NULL)
72+
{
73+
if ((*n)->d % 2 == 0)
74+
{
75+
*even = *n;
76+
even = &((*even)->right);
77+
}
78+
else
79+
{
80+
*odd = *n;
81+
odd = &((*odd)->right);
82+
}
83+
n = &((*n)->right);
84+
}
85+
*odd = *even = NULL;
86+
}
87+
88+
void insertFront(node *n, int data)
89+
{
90+
node temp = *n;
91+
*n = getnode(data);
92+
(*n)->right = temp;
93+
}
94+
95+
void display(node *n)
96+
{
97+
if (*n == NULL)
98+
{
99+
return;
100+
}
101+
102+
while (*n != NULL)
103+
{
104+
printf("-> %d ", (*n)->d);
105+
n = &((*n)->right);
106+
}
107+
printf("\n");
108+
}

0 commit comments

Comments
 (0)