SHOW:
|
|
- or go back to the newest paste.
| 1 | # Node class | |
| 2 | class Node: | |
| 3 | ||
| 4 | # Function to initialize the node object | |
| 5 | def __init__(self, data): | |
| 6 | self.data = data # Assign data | |
| 7 | self.next = None # Initialize next as null | |
| 8 | ||
| 9 | # Linked List class | |
| 10 | class LinkedList: | |
| 11 | ||
| 12 | # Function to initialize the Linked List object | |
| 13 | def __init__(self): | |
| 14 | self.head = None | |
| 15 | def print_linkedlist(self): | |
| 16 | nodes = [] | |
| 17 | node = self.head | |
| 18 | while node: | |
| 19 | nodes.append(node.data) | |
| 20 | node = node.next | |
| 21 | nodes.append('None')
| |
| 22 | print('->'.join(nodes))
| |
| 23 | ||
| 24 | one = Node("1")
| |
| 25 | two = Node('2')
| |
| 26 | three = Node('3')
| |
| 27 | llist = LinkedList() | |
| 28 | llist.head = one | |
| 29 | one.next = two | |
| 30 | two.next = three | |
| 31 | ||
| 32 | def push(self, new_data): | |
| 33 | ||
| 34 | # 1 & 2: Allocate the Node & | |
| 35 | # Put in the data | |
| 36 | new_node = Node(new_data) | |
| 37 | ||
| 38 | # 3. Make next of new Node as head | |
| 39 | new_node.next = self.head | |
| 40 | ||
| 41 | # 4. Move the head to point to new Node | |
| 42 | self.head = new_node | |
| 43 | ||
| 44 | def insertLast(self, new_data): | |
| 45 | #create a new node | |
| 46 | new_node = Node(new_data) | |
| 47 | ||
| 48 | #if linkedlist is empty, make the new node as head | |
| 49 | if self.head is None: | |
| 50 | self.head = new_node | |
| 51 | return | |
| 52 | #else traverse till the last node | |
| 53 | last = self.head | |
| 54 | while (last.next): | |
| 55 | last = last.next | |
| 56 | ||
| 57 | #change the next of last node | |
| 58 | - | last.next = new_node |
| 58 | + | last.next = new_node |
| 59 | ||
| 60 | ||
| 61 | def del_node(self, data_to_del): | |
| 62 | #store head node | |
| 63 | node = self.head | |
| 64 | ||
| 65 | #if head node itself hold the key to be deleted | |
| 66 | if node is not None: | |
| 67 | if node.data== data_to_del: | |
| 68 | self.head = node.next | |
| 69 | node = None | |
| 70 | return | |
| 71 | ||
| 72 | # search for the data to be deleted, keep track of | |
| 73 | # the prev_node as we need to change 'prev.next' | |
| 74 | ||
| 75 | while node is not None: | |
| 76 | if node.data ==data_to_del: | |
| 77 | break | |
| 78 | prev_node = node | |
| 79 | node = node.next | |
| 80 | ||
| 81 | #if key was not present in Linked list | |
| 82 | if node == None: | |
| 83 | return | |
| 84 | ||
| 85 | #unlink the node from linked list | |
| 86 | prev_node.next = node.next | |
| 87 | node = None |