File tree 1 file changed +108
-0
lines changed
1 file changed +108
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments