-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlinked_list.py
46 lines (45 loc) · 1.34 KB
/
linked_list.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
class Node():
def __init__(self, val, next=None, prev=None):
self.item = val
self.next = next
self.prev = prev
class LinkedList():
def __init__(self):
self.first = None
self.last = None
def add_first(self, val):
if self.first == None:
self.first = self.last = Node(val)
else:
node = Node(val, self.first)
self.first.prev = node
self.first = node
def add_last(self, val):
if self.first == None:
self.first = self.last = Node(val)
else:
node = Node(val, prev=self.last)
self.last.next = node
self.last = node
def remove_first(self):
if self.first != None:
val = self.first.item
if self.first.next == None:
self.first = self.last = None
else:
self.first = self.first.next
self.first.prev = None
return val
else:
return None
def remove_last(self):
if self.last != None:
val = self.last.item
if self.last.prev == None:
self.last = self.first = None
else:
self.last = self.last.prev
self.last.next = None
return val
else:
return None