1.7交換鏈表中的相鄰節點

交換鏈表中的相鄰節點

題目描述:

把鏈表相鄰元素翻轉,例如給定鏈表爲1——>2一>3一>4一>5——>6一>7,則翻轉後的鏈表變爲2一>1一>4一>3一>6一>5一>7node

解題思路:

就地逆序法:

經過調整結點指針域的指向來直接調換相鄰的兩個結點。若是單鏈表剛好有偶數個結點,那麼只須要將奇偶結點對調便可,若是鏈表有奇數個結點,那麼只須要將除最後一個結點外的其它結點進行奇偶對調便可。
指針

代碼實現:

# -*-coding:utf-8-*- 
"""
@Author  : 圖南
@Software: PyCharm
@Time    : 2019/9/6 18:34
"""
class Node:
    def __init__(self, data=None, next=None):
        self.data = data
        self.next = next


def print_link(head):
    if head is None or head.next is None:
        return None
    cur = head.next
    while cur.next != None:
        print(cur.data, end=' ')
        cur = cur.next
    print(cur.data)


def con_link(n):
    head = Node()
    cur = head
    for i in range(1, n+1):
        node = Node(i)
        cur.next = node
        cur = node
    return head


def reverseNode(head):
    pre = head
    cur = pre.next
    while cur is not None and cur.next is not None:
        next = cur.next
        pre.next = next
        cur.next = next.next
        next.next = cur
        pre = cur
        cur = pre.next
    return head


if __name__ == '__main__':
    head = con_link(6)
    print_link(head)
    head = reverseNode(head)
    print_link(head)

運行結果:


相關文章
相關標籤/搜索