Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรม Python ลบองค์ประกอบซ้ำออกจาก Circular Linked List


เมื่อต้องการลบข้อมูลซ้ำออกจาก Circular Linked List จำเป็นต้องสร้างคลาส 'Node' ในคลาสนี้มีแอตทริบิวต์สองอย่าง คือ ข้อมูลที่อยู่ในโหนด และการเข้าถึงโหนดถัดไปของ Linked List

ใน Circular Linked List หัว (head) และท้าย (rear) จะอยู่ติดกัน พวกมันเชื่อมต่อกันเป็นวงกลม และไม่มีค่า 'NULL' ในโหนดสุดท้าย

จำเป็นต้องสร้างอีกคลาสหนึ่งที่มีฟังก์ชันการเริ่มต้น และหัวของโหนดจะถูกเริ่มต้นเป็น 'None'

มีการกำหนดเมธอดหลายเมธอดโดยผู้ใช้เพื่อเพิ่มโหนด ลบข้อมูลซ้ำ และพิมพ์ค่าโหนด

ด้านล่างคือตัวอย่างสาธิต:

ตัวอย่าง

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 remove_duplicate_vals(self):
        curr = self.head
        if self.head == None:
            print("The list is empty")
        else:
            while True:
                temp = curr
                index_val = curr.next
                while index_val != self.head:
                    if curr.data == index_val.data:
                        temp.next = index_val.next
                    else:
                        temp = index_val
                    index_val = index_val.next
                curr = curr.next
                if curr.next == self.head:
                    break

    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_linked_list:
    my_cl = list_creation()
    print("Nodes are being added to the list")
    my_cl.add_data(21)
    my_cl.add_data(54)
    my_cl.add_data(78)
    my_cl.add_data(99)
    my_cl.add_data(21)
    print("The list is :")
    my_cl.print_it()
    my_cl.remove_duplicate_vals()
    print("The updated list is :")
    my_cl.print_it()

ผลลัพธ์

Nodes are being added to the list
The list is : 21 54 78 99 21
The updated list is : 21 54 78 99

คำอธิบาย

  • สร้างคลาส 'Node'
  • สร้างคลาสอื่นพร้อมแอตทริบิวต์ที่จำเป็น
  • กำหนดเมธอด 'remove_duplicate_vals' สำหรับลบองค์ประกอบซ้ำใน Linked List
  • กำหนดเมธอด 'print_it' สำหรับแสดงโหนดของ Circular Linked List
  • สร้างออบเจ็กต์ของคลาส 'list_creation' และเรียกใช้เมธอดเพื่อเพิ่มข้อมูล
  • เมธอด 'init' กำหนดโหนดแรกและสุดท้ายของ Circular Linked List เป็น None
  • เรียกใช้เมธอด 'remove_duplicate_vals'
  • เมธอดจะวนลูปผ่านลิสต์ และตรวจสอบว่ามีองค์ประกอบซ้ำหรือไม่
  • หากพบ จะลบออก
  • แสดงผลบนคอนโซลด้วยเมธอด 'print_it'