Circular Linked List.py
| class Node(object): |
| def __init__ (self, d, n = None): |
| self.data = d |
| self.next_node = n |
| def get_next (self): |
| return self.next_node |
| def set_next (self, n): |
| self.next_node = n |
| def get_data (self): |
| return self.data |
| def set_data (self, d): |
| self.data = d |
| def to_string (self): |
| return "Node value: " + str(self.data) |
| class CircularLinkedList (object): |
| def __init__ (self, r = None): |
| self.root = r |
| self.size = 0 |
| def get_size (self): |
| return self.size |
| def add (self, d): |
| if self.get_size() == 0: |
| self.root = Node(d) |
| self.root.set_next(self.root) |
| else: |
| new_node = Node (d, self.root.get_next()) |
| self.root.set_next(new_node) |
| self.size += 1 |
| def remove (self, d): |
| this_node = self.root |
| prev_node = None |
| while True: |
| if this_node.get_data() == d: |
| if prev_node is not None: |
| prev_node.set_next(this_node.get_next()) |
| else: |
| while this_node.get_next() != self.root: |
| this_node = this_node.get_next() |
| this_node.set_next(self.root.get_next()) |
| self.root = self.root.get_next() |
| self.size -= 1 |
| return True |
| elif this_node.get_next() == self.root: |
| return False |
| prev_node = this_node |
| this_node = this_node.get_next() |
| def find (self, d): |
| this_node = self.root |
| while True: |
| if this_node.get_data() == d: |
| return True |
| elif this_node.get_next() == self.root: |
| return False |
| this_node = this_node.get_next() |
| def print_list (self): |
| print ("Print List..........") |
| if self.root is None: |
| return |
| this_node = self.root |
| print (this_node.to_string()) |
| while this_node.get_next() != self.root: |
| this_node = this_node.get_next() |
| print (this_node.to_string()) |
| def main(): |
| myList = CircularLinkedList() |
| myList.add(6) |
| myList.add(7) |
| myList.add(4) |
| myList.add(8) |
| myList.add(2) |
| print("Find 8", myList.find(8)) |
| print("Find 13", myList.find(13)) |
| cur = myList.root |
| print (cur.to_string()) |
| for i in range(8): |
| cur = cur.get_next(); |
| print (cur.to_string()) |
| print("size="+str(myList.get_size())) |
| myList.print_list() |
| myList.remove(8) |
| print("size="+str(myList.get_size())) |
| print("Remove 7", myList.remove(7)) |
| print("size="+str(myList.get_size())) |
| myList.remove(2) |
| myList.print_list() |
| # Circular Linked List |
https://www.istn.ac.id/
Tidak ada komentar:
Posting Komentar