Python程序从循环链表中查找最大值和最小值节点!
当需要从循环链表中找到最大和最小节点值时,需要创建一个“节点”类。在这个类中,有两个属性,节点中存在的数据,以及对链表下一个节点的访问。
在循环链表中,头部和尾部彼此相邻。它们连接形成一个圆圈,并且在最后一个节点中没有'NULL'值。
需要创建另一个具有初始化函数的类,并且节点的头部将被初始化为“无”。
用户定义了多种方法来将节点添加到链表中,以查找节点中的最小值和最大值并显示它们。
以下是相同的演示-
示例
class Node: def __init__(self,data): self.data= data self.next= None class list_creation: def __init__(self): self.head= Node(None) self.tail= Node(None) self.head.next =self.tail self.tail.next =self.head def add_data(self,my_data): new_node = Node(my_data) if self.head.data is None: self.head = new_node self.tail = new_node new_node.next =self.head else: self.tail.next = new_node self.tail = new_node self.tail.next =self.head def find_min_node(self): curr = self.head; min_val = self.head.data; if(self.head == None): print("The list is empty"); else: while(True): if(min_val > curr.data): min_val = curr.data; curr= curr.next; if(curr == self.head): break; print("Minimumvaluenodeinthelist: "+ str(min_val)); def find_max_node(self): curr = self.head; max_val = self.head.data; if(self.head == None): print("List is empty"); else: while(True): if(max_val < curr.data): max_val = curr.data; curr= curr.next; if(curr == self.head): break; print("Themaximumvalueednodeis: "+ str(max_val)); class circular_linked_list: my_cl = list_creation() print("Values have been added to the list") my_cl.add_data(11) my_cl.add_data(52) my_cl.add_data(36) my_cl.add_data(74) my_cl.find_max_node() my_cl.find_min_node()输出结果
Values have been added to the list Themaximumvalueednodeis: 74 Minimumvaluenodeinthelist: 11
解释
创建了“节点”类。
创建了另一个具有必需属性的类。
定义了另一个名为“add_data”的方法,用于向循环链表添加数据。
定义了另一个名为“find_max_node”的方法,它遍历列表并获取节点中的最大值。
定义了另一个名为“find_min_node”的方法,它遍历列表并获取节点中的最小值。
创建“list_creation”类的对象,并在其上调用方法以添加数据。
定义了一个'init'方法,即循环链表的第一个和最后一个节点为None。
'find_max_node'方法和'find_min_node'方法被调用。
它遍历链表中的节点,获取链表中的最大值和最小值。
这显示在控制台上。