从循环链表的末尾删除节点的Python程序

从循环链表的末尾删除节点的Python程序

当需要从循环链表的末尾删除节点时,需要创建一个’Node’类。在这个类中,有两个属性,即节点中存在的数据和链表中下一个节点的访问。

在循环链表中,头部和尾部是相邻的。它们通过连接形成一个圆圈,并且在最后一个节点中没有’NULL’值。

还需要创建另一个’linked_list’类,该类具有初始化函数,并且节点的头将初始化为“None”。

以下是说明相同的演示−

更多Python相关文章,请阅读:Python 教程

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

class linked_list:  
    def __init__(self):  
        self.head = Node(None);  
        self.tail = Node(None);  
        self.head.next = self.tail;  
        self.tail.next = self.head;  

    def add_value(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 delete_from_end(self):  
        if(self.head == None):  
            return;  
        else:  
            if(self.head != self.tail ):  
                curr = self.head;                     
                while(curr.next != self.tail):  
                    curr = curr.next;  
                self.tail = curr;  
                self.tail.next = self.head;  

            else:  
                self.head = self.tail = None;  

    def print_it(self):  
        curr = self.head;  
        if self.head is None:  
            print("The list is empty");  
            return;  
        else:  
            print(curr.data),  
            while(curr.next != self.head):  
                curr = curr.next;  
                print(curr.data),  
            print("\n");  

class circular_list:  
    my_cl = linked_list();  
    my_cl.add_value(11);  
    my_cl.add_value(32);  
    my_cl.add_value(43);  
    my_cl.add_value(57);  

    print("原始列表:");  
    my_cl.print_it();  
    while(my_cl.head != None):  
        my_cl.delete_from_end();  
        print("删除后的列表:");  
        my_cl.print_it(); 

输出

原始列表:
11
32
43
57
删除后的列表:
11
32
43
删除后的列表:
11
32
删除后的列表:
11
删除后的列表:
列表为空

说明

  • 创建了’Node’类。
  • 创建了具有所需属性的另一个“linked_list”类。
  • 定义了另一个名为’add_data’的方法,该方法用于向循环链表中添加数据。
  • 定义了另一个名为’delete_from_end’的方法,该方法通过删除其引用逐个从末尾删除元素。
  • 定义了另一个名为’print_it’的方法,用于在控制台上显示链表数据。
  • 创建了’linked_list’类的一个对象,并对其调用了方法以添加数据。
  • 这使用“print_it”方法在控制台上显示。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程