File tree Expand file tree Collapse file tree 2 files changed +50
-1
lines changed Expand file tree Collapse file tree 2 files changed +50
-1
lines changed Original file line number Diff line number Diff line change @@ -87,4 +87,32 @@ def purge(self):
87
87
self ._head = None
88
88
self ._tail = None
89
89
90
-
90
+ def extract (self , obj ):
91
+ tmp = self ._head
92
+ prev = tmp
93
+ while tmp != None :
94
+ if tmp ._value == obj :
95
+ if tmp == self ._head :
96
+ tmp ._next ._prev = None
97
+ self ._head = tmp ._next
98
+ elif tmp == self ._tail :
99
+ tmp ._prev = None
100
+ prev ._next = None
101
+ self ._tail = prev
102
+ else :
103
+ prev ._next = tmp ._next
104
+ tmp ._prev = None
105
+ tmp ._next ._prev = prev
106
+ tmp ._next = None
107
+ return obj
108
+ prev = tmp
109
+ tmp = tmp ._next
110
+ return None
111
+
112
+ def __copy__ (self ):
113
+ tmp = DoublyLinkedList ()
114
+ current = self ._head
115
+ while current != None :
116
+ tmp .append (current .value )
117
+ current = current ._next
118
+ return tmp
Original file line number Diff line number Diff line change 1
1
import unittest
2
2
from doublyLinkedList import DoublyLinkedList
3
3
from opus7 .exception import *
4
+ from copy import copy
4
5
5
6
class TestList (unittest .TestCase ):
6
7
def setUp (self ):
@@ -41,6 +42,26 @@ def test_purge(self):
41
42
self .assertEqual (self .l .head , None )
42
43
self .assertEqual (self .l .tail , None )
43
44
45
+ def test_extract (self ):
46
+ self .l .append (1 )
47
+ self .l .append (2 )
48
+ self .l .append (3 )
49
+ self .l .append (4 )
50
+ self .l .append (5 )
51
+ self .assertEqual (self .l .extract (1 ), 1 )
52
+ self .assertEqual (self .l .head .value , 2 )
53
+ self .assertEqual (self .l .extract (10 ), None )
54
+ self .assertEqual (self .l .extract (5 ), 5 )
55
+ self .assertEqual (self .l .tail .value , 4 )
56
+
57
+ def test_copy (self ):
58
+ self .l .append (1 )
59
+ self .l .append (2 )
60
+ self .l .append (3 )
61
+ a = copy (self .l )
62
+ self .assertEqual (a .head .value , 1 )
63
+ self .assertEqual (a .tail .value , 3 )
64
+
44
65
45
66
if __name__ == "__main__" :
46
67
unittest .main ()
You can’t perform that action at this time.
0 commit comments