Skip to content

Commit d3ffb01

Browse files
even_after_odd
1 parent c4cd826 commit d3ffb01

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed

even_after_odd.py

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
class Node:
2+
def __init__(self,value):
3+
self.value = value
4+
self.next = None
5+
6+
class LinkedList:
7+
def __init__(self):
8+
self.head = None
9+
def create_linked_list(self, input_list):
10+
self.head = None
11+
for value in input_list:
12+
if self.head is None:
13+
self.head = Node(value)
14+
else:
15+
node = self.head
16+
while node.next:
17+
node = node.next
18+
node.next = Node(value)
19+
20+
def append(self, value):
21+
if self.head is None:
22+
self.head = Node(value)
23+
self.tail = self.head
24+
return
25+
node = self.head
26+
while node.next:
27+
node = node.next
28+
node.next = Node(value)
29+
self.tail = node.next
30+
self.tail.next = None
31+
32+
def appendNode(self, inputnode):
33+
if self.head is None:
34+
self.head = inputnode
35+
return
36+
node = self.head
37+
while node.next:
38+
node = node.next
39+
node.next = inputnode
40+
inputnode.next = None
41+
def remove(self, inputnode):
42+
if self.head is None:
43+
return
44+
node = self.head
45+
if node == inputnode:
46+
self.head = inputnode.next
47+
inputnode.next = None
48+
return
49+
while node.next != inputnode:
50+
node = node.next
51+
node.next = node.next.next
52+
inputnode.next = None
53+
54+
def to_list(self):
55+
py_list = []
56+
node = self.head
57+
while node:
58+
py_list.append(node.value)
59+
node = node.next
60+
return py_list
61+
62+
linked_list = LinkedList()
63+
linked_list.create_linked_list([1,2,3,4,5,6,7,8,9,10])
64+
print(linked_list.to_list())
65+
66+
def even_after_odd(llist):
67+
evenll = LinkedList()
68+
oddll = LinkedList()
69+
node = llist.head
70+
evenll_node = evenll.head
71+
oddll_node = oddll.head
72+
while node:
73+
if node.value%2 == 0:
74+
nextPtr = node.next
75+
llist.remove(node)
76+
evenll.appendNode(node)
77+
node = nextPtr
78+
else:
79+
nextPtr = node.next
80+
llist.remove(node)
81+
oddll.appendNode(node)
82+
node = nextPtr
83+
84+
print(evenll.to_list())
85+
print(oddll.to_list())
86+
87+
even_after_odd(linked_list)

0 commit comments

Comments
 (0)