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

Chương trình Python để chèn một nút mới vào đầu Danh sách được liên kết theo vòng tròn

Khi được yêu cầu chèn một nút mới vào đầu danh sách liên kết vòng tròn, một lớp 'Nút' cần được tạo. Trong lớp này, có hai thuộc tính, dữ liệu có trong nút và quyền truy cập vào nút tiếp theo của danh sách được liên kết.

Trong danh sách liên kết hình tròn, phần đầu và phần sau nằm liền kề nhau. Chúng được kết nối để tạo thành một vòng kết nối và không có giá trị 'NULL' trong nút cuối cùng.

Một lớp khác cần được tạo sẽ có chức năng khởi tạo và phần đầu của nút sẽ được khởi tạo thành 'Không có'.

Người dùng xác định nhiều phương thức để thêm nút vào đầu danh sách được liên kết và in các giá trị của nút.

Dưới đây là một minh chứng cho điều tương tự -

Ví dụ

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_at_beginning(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:  
         temp = self.head;  
         new_node.next = temp;  
         self.head = new_node;  
         self.tail.next = self.head;
         
   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("Values are being added to the list")
   my_cl.add_at_beginning(21);  
   my_cl.print_it();  
   my_cl.add_at_beginning(53);  
   my_cl.print_it();  
   my_cl.add_at_beginning(76);
   my_cl.print_it(); 

Đầu ra

Values are being added to the list
21

53
21

76
53
21

Giải thích

  • Lớp 'Node' đã được tạo.
  • Một lớp khác với các thuộc tính bắt buộc được tạo.
  • Một phương thức khác có tên 'add_at_beginning' được xác định, được sử dụng để thêm dữ liệu vào danh sách liên kết vòng ở đầu, tức là trước nút 'head'.
  • Một phương thức khác có tên 'print_it' được xác định, phương thức này hiển thị các nút của danh sách liên kết vòng tròn.
  • Một đối tượng của lớp 'list_creation' được tạo và các phương thức được gọi trên đó để thêm dữ liệu.
  • Phương thức 'init' được xác định, rằng nút đầu tiên và nút cuối cùng của danh sách liên kết vòng tròn thành Không có.
  • Phương thức 'add_at_beginning' được gọi.
  • Nó lấy phần đầu của danh sách được liên kết, thêm một phần tử vào trước nó và tham chiếu địa chỉ của nó tới con trỏ đuôi và tới con trỏ tiếp theo.
  • Điều này được hiển thị trên bảng điều khiển bằng phương thức 'print_it'.