I’m learning datastructure while compiling this mergesort linkedlist . I got this error. I tried so much but didn’t work. Can any one tell me what’s wrong? please .
Traceback (most recent call last): File “C:Users**AppDataLocalProgramsPythonPython37merge_sort_ver_2.0 linked list.py”, line 122, in
JavaScript
x
2
1
sorted_list=merge_sort(lst)
2
File “C:Users**AppDataLocalProgramsPythonPython37merge_sort_ver_2.0 linked list.py”, line 75, in merge_sort
JavaScript
1
2
1
return merge(left,right)
2
File “C:Users**AppDataLocalProgramsPythonPython37merge_sort_ver_2.0 linked list.py”, line 94, in merge
JavaScript
1
2
1
left_head=left.head
2
AttributeError: ‘NoneType’ object has no attribute ‘head’
JavaScript
1
48
48
1
def merge_sort(ll):
2
if ll.length()==1:
3
return ll
4
elif ll.head is None:
5
return ll
6
left_half,right_half=split(ll)
7
left=merge_sort(left_half)
8
right=merge_sort(right_half)
9
return merge(left,right)
10
def split(ll):
11
if ll.head==None or ll==None:
12
left_half=ll
13
right_half=None
14
return left_half,right_half
15
else:
16
size=ll.length()
17
mid=size//2
18
mid_node=ll.nodeAt(mid-1)
19
right_half=ll
20
left_half=LinkedList()
21
left_half.head=mid_node.next
22
mid_node.next=None
23
return left_half,right_half
24
def merge(left,right):
25
merged=LinkedList()
26
merged.tailinsert(0)
27
current=merged.head
28
left_head=left.head
29
right_head=right.head
30
31
while left_head or right_head:
32
if left_head is None:
33
current.next=right_head
34
right_head=right_head.next
35
elif right_head is None:
36
current.next=left_head
37
left_head=left_head.next
38
else:
39
merged.head=head
40
return merged.printlist()
41
lst=LinkedList()
42
lst.tailinsert(14)
43
lst.tailinsert(46)
44
lst.tailinsert(43)
45
lst.tailinsert(27)
46
sorted_list=merge_sort(lst)
47
print(sorted_list)
48
Advertisement
Answer
thanks Jérômei for your tips i cleared the error
JavaScript
1
84
84
1
def merge_sort(ll):
2
3
if ll.length()==1:
4
return ll
5
elif ll.head is None:
6
return ll
7
8
9
left_half,right_half=split(ll)
10
left=merge_sort(left_half)
11
right=merge_sort(right_half)
12
return merge(left,right)
13
14
def split(ll):
15
16
if ll.head==None or ll==None:
17
left_half=ll
18
right_half=None
19
return left_half,right_half
20
else:
21
size=ll.length()
22
mid=size//2
23
mid_node=ll.nodeAt(mid-1)
24
right_half=LinkedList()
25
left_half=ll
26
right_half.head=mid_node.next
27
mid_node.next=None
28
return left_half,right_half
29
30
31
def merge(left,right):
32
merged=LinkedList()
33
merged.tailinsert(0)
34
current=merged.head
35
left_head=left.head
36
right_head=right.head
37
while left_head and right_head :
38
left_data=left_head.data
39
right_data=right_head.data
40
if left_data < right_data:
41
current.next=left_head
42
left_head=left_head.next
43
elif right_data <left_data:
44
current.next=right_head
45
right_head=right_head.next
46
current=current.next
47
48
while right_head is not None :
49
current.next=right_head
50
right_head=right_head.next
51
current=current.next
52
while left_head is not None :
53
current.next=left_head
54
left_head=left_head.next
55
current=current.next
56
57
current=current.next
58
head=merged.head.next
59
merged.head=head
60
print("merged 1:")
61
merged.printlist()
62
63
return merged
64
lst=LinkedList()
65
lst.tailinsert(14)
66
lst.tailinsert(46)
67
lst.tailinsert(43)
68
lst.tailinsert(27)
69
merge_sort(lst)
70
71
**output:
72
merged 1:
73
14
74
46
75
merged 1:
76
27
77
43
78
merged 1:
79
14
80
27
81
43
82
46**
83
84