Python程序创建一个由n个节点组成的循环链表,并倒序显示它

Python程序创建一个由n个节点组成的循环链表,并倒序显示它

简介

循环链表是线性表的一种,它的最后一个节点指向第一个节点,形成一个环。在Python中,我们可以使用类来实现循环链表。本文将介绍如何使用Python创建一个由n个节点组成的循环链表,并如何倒序显示它。

创建循环链表

首先,我们需要定义一个Node类来表示每一个节点。Node类需要包含两个属性:data表示节点的值,next表示指向下一个节点的指针。

class Node:
  def __init__(self, data):
    self.data = data
    self.next = None

接下来,我们可以定义一个CircularLinkedList类来表示循环链表。这个类需要包含一个属性:head表示链表的头节点。

class CircularLinkedList:
  def __init__(self):
    self.head = None

接下来,我们可以定义一个方法来向链表中插入节点。插入节点可以分为两种情况:

  1. 当链表为空时,直接将新节点设置为头节点
  2. 当链表不为空时,将新节点插入到链表末尾,并将新节点的next指向头节点
def insert(self, data):
  new_node = Node(data)

  if self.head is None:
    self.head = new_node
    self.head.next = self.head
  else:
    current_node = self.head
    while current_node.next != self.head:
      current_node = current_node.next
    current_node.next = new_node
    new_node.next = self.head

这样,我们就可以通过循环调用insert方法来创建一个由n个节点组成的循环链表。

n = 5 # 创建一个由5个节点组成的循环链表
linked_list = CircularLinkedList()

for i in range(n):
  linked_list.insert(i + 1)

倒序显示链表

接下来,我们可以定义一个方法来倒序显示链表。为了倒序显示,我们需要先遍历链表,将每个节点的引用存储在一个数组中。然后,我们可以倒序遍历这个数组,依次输出每个节点的值。

def reverse(self):
  current_node = self.head
  values = []

  while current_node.next != self.head:
    values.append(current_node.data)
    current_node = current_node.next
  values.append(current_node.data)

  for i in range(len(values)-1,-1,-1):
    print(values[i])

这样,我们就可以通过调用reverse方法来倒序显示链表。

linked_list.reverse()

示例代码

class Node:
  def __init__(self, data):
    self.data = data
    self.next = None

class CircularLinkedList:
  def __init__(self):
    self.head = None

  def insert(self, data):
    new_node = Node(data)

    if self.head is None:
      self.head = new_node
      self.head.next = self.head
    else:
      current_node = self.head
      while current_node.next != self.head:
        current_node = current_node.next
      current_node.next = new_node
      new_node.next = self.head

  def reverse(self):
    current_node = self.head
    values = []

    while current_node.next != self.head:
      values.append(current_node.data)
      current_node = current_node.next
    values.append(current_node.data)

    for i in range(len(values)-1,-1,-1):
      print(values[i])

n = 5 # 创建一个由5个节点组成的循环链表
linked_list = CircularLinkedList()

for i in range(n):
  linked_list.insert(i + 1)

linked_list.reverse()

结论

通过本文的介绍,我们了解了如何使用Python创建一个由n个节点组成的循环链表,并如何倒序显示它。循环链表是一种非常有用的数据结构,在实际编程中也会经常用到。希望本文能帮助读者加深对循环链表的理解,对相关编程的实践有所启发。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程