将链表打印为矩阵形式
Print a linked list as a matrix form
我想将链表打印成矩阵形式,这个链表有 nxm 个值,所以我想将这些值打印成矩阵形式。
class Node:
def __init__(self, data=None, next=None):
self.data = data
self.next = next
class LinkedList:
def __init__(self):
self.head = None
def insert(self, data):
newNode = Node(data)
if(self.head):
current = self.head
while(current.next):
current = current.next
current.next = newNode
else:
self.head = newNode
def printLL(self):
current = self.head
while(current):
print(current.data)
current = current.next
LL = LinkedList()
LL.insert(19)
LL.insert(96)
LL.insert(87)
LL.insert(73)
LL.insert(56)
LL.insert(48)
LL.insert(98)
LL.insert(87)
LL.insert(90)
LL.insert(78)
LL.insert(9)
LL.insert(16)
LL.insert(84)
LL.insert(90)
LL.insert(46)
LL.insert(88)
LL.insert(66)
LL.insert(12)
LL.insert(80)
LL.insert(44)
LL.insert(21)
LL.insert(18)
LL.insert(36)
LL.insert(76)
LL.insert(98)
LL.insert(25)
LL.insert(7)
LL.insert(15)
#LL has 28 values because of 4x7 matrix
rows = 4
columns = 7
#Here I tried to print in a matrix form
for i in range(rows):
for j in range(columns):
print(LL.printLL())
在 for-loop 中,我尝试打印它看起来像这样:
19 , 96 , 87 , 73 , 56 , 48 , 98
87 , 90 , 78 , 9 , 16 , 84 , 90
46 , 88 , 66 , 12 , 80 , 44 , 21
18 , 36 , 76 , 98 , 25 , 7 , 15
但我只是得到:
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
我不允许使用列表理解、映射、连接等。这就是我尝试使用 for 循环的原因。
希望有人能帮帮我,谢谢。
您的尝试有几个问题:
LL.printLL()
已经执行了 print
语句,所以你不应该执行 print(LL.printLL())
。通过包装 print
你只会打印一个额外的 None
: printLL
不会 return 任何东西。
LL.printLL()
打印整个列表,因此在循环中重复它只会打印整个列表
我建议为 printLL
定义一个可选参数,您可以用它告诉它您想要多少列。默认情况下,该参数可以获得一个非常大的值(如 float("inf")
),这实际上意味着列表将打印在一行上,就像现在已经做的那样。
然后让printLL
中的循环检查当前列表元素的序号是否是列数的倍数。如果是这样,让它打印 end="\n"
而不是 end=" "
.
最后,您的主程序代码应该只调用一次 printLL
并将所需的列数作为参数传递:
def printLL(self, width=float("inf")):
current = self.head
i = 0
while(current):
i += 1
print(current.data, end=" " if i % width else "\n")
current = current.next
if i % width:
print()
在主程序中:
columns = 7
printLL(columns)
注意:无需指定行数...它来自列数。
我想将链表打印成矩阵形式,这个链表有 nxm 个值,所以我想将这些值打印成矩阵形式。
class Node:
def __init__(self, data=None, next=None):
self.data = data
self.next = next
class LinkedList:
def __init__(self):
self.head = None
def insert(self, data):
newNode = Node(data)
if(self.head):
current = self.head
while(current.next):
current = current.next
current.next = newNode
else:
self.head = newNode
def printLL(self):
current = self.head
while(current):
print(current.data)
current = current.next
LL = LinkedList()
LL.insert(19)
LL.insert(96)
LL.insert(87)
LL.insert(73)
LL.insert(56)
LL.insert(48)
LL.insert(98)
LL.insert(87)
LL.insert(90)
LL.insert(78)
LL.insert(9)
LL.insert(16)
LL.insert(84)
LL.insert(90)
LL.insert(46)
LL.insert(88)
LL.insert(66)
LL.insert(12)
LL.insert(80)
LL.insert(44)
LL.insert(21)
LL.insert(18)
LL.insert(36)
LL.insert(76)
LL.insert(98)
LL.insert(25)
LL.insert(7)
LL.insert(15)
#LL has 28 values because of 4x7 matrix
rows = 4
columns = 7
#Here I tried to print in a matrix form
for i in range(rows):
for j in range(columns):
print(LL.printLL())
在 for-loop 中,我尝试打印它看起来像这样:
19 , 96 , 87 , 73 , 56 , 48 , 98
87 , 90 , 78 , 9 , 16 , 84 , 90
46 , 88 , 66 , 12 , 80 , 44 , 21
18 , 36 , 76 , 98 , 25 , 7 , 15
但我只是得到:
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
19
96
87
73
56
48
98
87
90
78
9
16
84
90
46
88
66
12
80
44
21
18
36
76
98
25
7
15
None
我不允许使用列表理解、映射、连接等。这就是我尝试使用 for 循环的原因。 希望有人能帮帮我,谢谢。
您的尝试有几个问题:
LL.printLL()
已经执行了print
语句,所以你不应该执行print(LL.printLL())
。通过包装print
你只会打印一个额外的None
:printLL
不会 return 任何东西。LL.printLL()
打印整个列表,因此在循环中重复它只会打印整个列表
我建议为 printLL
定义一个可选参数,您可以用它告诉它您想要多少列。默认情况下,该参数可以获得一个非常大的值(如 float("inf")
),这实际上意味着列表将打印在一行上,就像现在已经做的那样。
然后让printLL
中的循环检查当前列表元素的序号是否是列数的倍数。如果是这样,让它打印 end="\n"
而不是 end=" "
.
最后,您的主程序代码应该只调用一次 printLL
并将所需的列数作为参数传递:
def printLL(self, width=float("inf")):
current = self.head
i = 0
while(current):
i += 1
print(current.data, end=" " if i % width else "\n")
current = current.next
if i % width:
print()
在主程序中:
columns = 7
printLL(columns)
注意:无需指定行数...它来自列数。