File tree 3 files changed +82
-1
lines changed
Linked List/Doubly Linked List
3 files changed +82
-1
lines changed Original file line number Diff line number Diff line change
1
+ class Node :
2
+ def __init__ (self , data ):
3
+ self .data = data
4
+ self .next = None
5
+ self .prev = None
6
+
7
+
8
+ class DoublyLinkedList :
9
+ def __init__ (self ):
10
+ self .head = None
11
+
12
+ def append (self , data ):
13
+ new_node = Node (data )
14
+
15
+ if self .head is None :
16
+ new_node .prev = None
17
+ self .head = new_node
18
+ else :
19
+ cur = self .head
20
+ while cur .next :
21
+ cur = cur .next
22
+ cur .next = new_node
23
+ new_node .prev = cur
24
+ new_node .next = None
25
+
26
+ def prepend (self , data ):
27
+ new_node = Node (data )
28
+
29
+ if self .head is None :
30
+ new_node .prev = None
31
+ self .head = new_node
32
+ else :
33
+ self .head .prev = new_node
34
+ new_node .next = self .head
35
+ self .head = new_node
36
+ new_node .prev = None
37
+
38
+ def print_list (self ):
39
+ cur = self .head
40
+ while cur :
41
+ print (cur .data )
42
+ cur = cur .next
43
+
44
+ def pairs_with_sum (self , sum_val ):
45
+ pairs = list ()
46
+ p = self .head
47
+ q = None
48
+ while p :
49
+ q = p .next
50
+ while q :
51
+ if p .data + q .data == sum_val :
52
+ pairs .append ("(" + str (p .data ) + ", " + str (q .data ) + ")" )
53
+ q = q .next
54
+ p = p .next
55
+
56
+ return pairs
57
+
58
+
59
+
60
+
61
+
62
+ dllist = DoublyLinkedList ()
63
+ dllist .append (1 )
64
+ dllist .append (2 )
65
+ dllist .append (3 )
66
+ dllist .append (4 )
67
+ dllist .append (5 )
68
+
69
+
70
+ dllist .print_list ()
71
+ print ("\n " )
72
+
73
+ X = dllist .pairs_with_sum (6 )
74
+ Y = dllist .pairs_with_sum (0 )
75
+ Z = dllist .pairs_with_sum (5 )
76
+ print (X )
77
+ print (Y )
78
+ print (Z )
Original file line number Diff line number Diff line change 4
4
02 . Doubly Linked Lists -- Add Node Before/After
5
5
03 . Doubly Linked Lists -- Delete Node
6
6
04 . Doubly Linked Lists -- Reverse
7
- 05 . Doubly Linked Lists -- Remove Duplicates
7
+ 05 . Doubly Linked Lists -- Remove Duplicates
8
+ 06 . Doubly Linked Lists -- Pairs with Sum
Original file line number Diff line number Diff line change 25
25
24 . Doubly Linked Lists -- Delete Node
26
26
25 . Doubly Linked Lists -- Reverse
27
27
26 . Doubly Linked Lists -- Remove Duplicates
28
+ 27 . Doubly Linked Lists -- Pairs with Sum
29
+
28
30
29
31
30
32
You can’t perform that action at this time.
0 commit comments