https://leetcode-cn.com/problems/swap-nodes-in-pairs/
class Solution:
def swapPairs(self, head: ListNode) -> ListNode:
dummy = ListNode()
dummy.next = head
dummy_tmp = dummy
while dummy_tmp.next and dummy_tmp.next.next:
node1 = dummy_tmp.next
node2 = dummy_tmp.next.next
dummy_tmp.next = node2
node1.next = node2.next
node2.next = node1
dummy_tmp = node1
return dummy.next
from leetcode.linked_struct import ListNode
from leetcode.linked_struct import SingleLinkList
link_list = SingleLinkList()
node1 = ListNode(1)
node2 = ListNode(2)
node3 = ListNode(3)
node4 = ListNode(4)
link_list.head = node1
node1.next = node2
node2.next = node3
node3.next = node4
class Solution:
def swapPairs(self, head: ListNode) -> ListNode:
dummy = ListNode()
dummy.next = head
dummy_tmp = dummy
while dummy_tmp.next and dummy_tmp.next.next:
node1 = dummy_tmp.next
node2 = dummy_tmp.next.next
dummy_tmp.next = node2
node1.next = node2.next
node2.next = node1
dummy_tmp = node1
return dummy.next
if __name__ == '__main__':
link_list.view_linklist()
a = Solution()
link_list.head = a.swapPairs(link_list.head)
link_list.view_linklist()
Tips: 关于Pycharm的调试技巧, 可以参考我的另一篇文章 PyCharm常用功能 - 断点调试 如图所示, 我们自定义的链表结点(当前结点的值 + next结点的信息)都会在工作台显示出来, 是不是更直观的了解链表了些!
上面是经历过一次while循环后的变量信息打印.由左边框的部分可见, 一轮循环后, value=1 和 value=2 的前2个结点已经交换完毕了
同时可以用id(dummy), id(head)这种方式查看某一个结点的地址信息(以后做链表题可能会用到)
这是直接运行的结果, 操作是:
结果可以显示 操作前 and 操作后 的链表情况
以上就是 Leetcode链表题 结合 自定义链表结构 的 调试案例, 你学会了吗?