Computer >> Máy Tính >  >> Lập trình >> Python

Danh sách được liên kết ngược bằng Python

Giả sử chúng ta có một danh sách liên kết, chúng ta phải đảo ngược nó. Vì vậy, nếu danh sách giống như 1 → 3 → 5 → 7, thì danh sách đảo ngược mới sẽ là 7 → 5 → 3 → 1

Để giải quyết vấn đề này, chúng tôi sẽ thực hiện theo cách tiếp cận này -

  • Xác định một thủ tục để thực hiện đảo ngược danh sách theo cách đệ quy để giải quyết (đầu, quay lại)
  • nếu phần đầu không xuất hiện, thì hãy quay lại phần đầu
  • temp:=head.next
  • head.next:=back
  • back =head
  • nếu tạm thời trống, sau đó quay lại head
  • head =temp
  • trả về giải quyết (đầu, quay lại)

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau đây để hiểu rõ hơn -

class ListNode:
   def __init__(self, data, next = None):
      self.val = data
      self.next = next
def make_list(elements):
   head = "ListNode(elements[0])
   for element in elements[1:]:
      ptr = head
      while ptr.next:
         ptr = ptr.next
      ptr.next = ListNode(element)
return head
def print_list(head):
   ptr = head
   print('[', end = "")
   while ptr:
      print(ptr.val, end = ", ")
      ptr = ptr.next
   print(']')
class Solution(object):
   def reverseList(self, head):
      """
      :type head: ListNode
      :rtype: ListNode
      """
      return self.solve(head,None)
   def solve(self, head, back):
      if not head:
         return head
      temp= head.next
      #print(head.val)
      head.next = back
      back = head
      if not temp:
         return head
      head = temp
      return self.solve(head,back)
list1 = make_list([1,3,5,7])
ob1 = Solution()
list2 = ob1.reverseList(list1)
print_list(list2)

Đầu vào

list1 = [1,3,5,7]

Đầu ra

[7, 5, 3, 1, ]