鏈表在計算機(jī)科學(xué)中是一種非常重要的數(shù)據(jù)結(jié)構(gòu)。它由節(jié)點組成,每個節(jié)點都包含數(shù)據(jù)和指向下一個節(jié)點的指針。在Python中,我們可以使用類來實現(xiàn)鏈表數(shù)據(jù)結(jié)構(gòu)。而鏈表的反轉(zhuǎn)是鏈表操作中的一個基本問題,在本文中,我們將介紹Python中如何反轉(zhuǎn)鏈表。
class Node: def __init__(self, val=None): self.val = val self.next = None class LinkedList: def __init__(self): self.head = None def add_node(self, val): if not self.head: self.head = Node(val) else: temp_node = self.head while temp_node.next: temp_node = temp_node.next temp_node.next = Node(val) def print_list(self): curr_node = self.head while curr_node: print(curr_node.val) curr_node = curr_node.next def reverse_list(self): prev_node = None curr_node = self.head while curr_node: next_node = curr_node.next curr_node.next = prev_node prev_node = curr_node curr_node = next_node self.head = prev_node linked_list = LinkedList() linked_list.add_node(1) linked_list.add_node(2) linked_list.add_node(3) linked_list.add_node(4) linked_list.print_list() linked_list.reverse_list() linked_list.print_list()
上述代碼實現(xiàn)了一個簡單的單向鏈表,包括添加節(jié)點、打印鏈表和反轉(zhuǎn)鏈表三個操作。其中反轉(zhuǎn)鏈表的實現(xiàn)方法為:
- 設(shè)前驅(qū)節(jié)點初始值為None,當(dāng)前節(jié)點為鏈表頭結(jié)點
- 遍歷整個鏈表,將當(dāng)前節(jié)點的next指針指向前驅(qū)節(jié)點
- 將當(dāng)前節(jié)點設(shè)為前驅(qū)節(jié)點,將下一個節(jié)點設(shè)為當(dāng)前節(jié)點,繼續(xù)遍歷
- 當(dāng)遍歷完鏈表后,將鏈表頭結(jié)點設(shè)為前驅(qū)節(jié)點
在運行完反轉(zhuǎn)操作后,再次打印鏈表即可看到反轉(zhuǎn)后的結(jié)果。
在Python中,反轉(zhuǎn)鏈表是一個非常基本的操作,可以幫助我們更好地理解鏈表的結(jié)構(gòu)和操作。同時,對于面試題和編程挑戰(zhàn),也是必不可少的技能。