Singly-Linked Listslists

Singly-Linked Listslists

Singly-LinkedSingly-Linked ListsLists © 2011 John Wiley & Sons, Data Structures and Algorithms Using Python, by Rance D. Necaise. Modifications by Nathan Sprague LinkedLinked StructureStructure Constructed using a collection of objects called nodes. Each node contains data and at least one reference or link to another node. Linked list – a linked structure in which the nodes are linked together in linear order. © 2011 John Wiley & Sons, Data Structures and Algorithms Using Python, by Rance D. Necaise. Linked Structures – 2 LinkedLinked ListList Terms: head – first node in the list. tail – last node in the list; link field has a null reference. self._ © 2011 John Wiley & Sons, Data Structures and Algorithms Using Python, by Rance D. Necaise. Linked Structures – 3 LinkedLinked ListList Most nodes have no name; they are referenced via the link of the preceding node. head reference – the first node must be named or referenced by an external variable. Provides an entry point into the linked list. An empty list is indicated by a null head reference. self._ © 2011 John Wiley & Sons, Data Structures and Algorithms Using Python, by Rance D. Necaise. Linked Structures – 4 SinglySingly LinkedLinked ListList A linked list in which each node contains a single link field and allows for a complete linear order traversal from front to back. self._ © 2011 John Wiley & Sons, Data Structures and Algorithms Using Python, by Rance D. Necaise. Linked Structures – 5 NodeNode DefinitionDefinition The nodes are constructed from a simple storage class: class ListNode: def __init__(self, data, next_node): self.data = data self.next = next_node © 2011 John Wiley & Sons, Data Structures and Algorithms Using Python, by Rance D. Necaise. Linked Structures – 6 PrependingPrepending NodesNodes Example: add value 96 to the sample list. self._ © 2011 John Wiley & Sons, Data Structures and Algorithms Using Python, by Rance D. Necaise. Linked Structures – 7 PrependingPrepending NodesNodes Create a new node for the new item. new_node self._ Connect the new node to the list. new_node self._ © 2011 John Wiley & Sons, Data Structures and Algorithms Using Python, by Rance D. Necaise. Linked Structures – 8 PrependingPrepending NodesNodes The resulting list. self._ Python code # Given the head reference and the new item. new_node = ListNode( new_item, self._head ) self._head = new_node © 2011 John Wiley & Sons, Data Structures and Algorithms Using Python, by Rance D. Necaise. Linked Structures – 9 RemovingRemoving TheThe FirstFirst NodeNode The head reference must be reposition to reference the next node in the list. self._ © 2011 John Wiley & Sons, Data Structures and Algorithms Using Python, by Rance D. Necaise. Linked Structures – 10 LinkedLinked Stack...Stack... © 2011 John Wiley & Sons, Data Structures and Algorithms Using Python, by Rance D. Necaise. Linked Structures – 11 UsingUsing aa TailTail ReferenceReference Some applications require items be appended to the end of the linked list. tail reference – a second external reference indicating the tail or last node in the list. self._ self._ © 2011 John Wiley & Sons, Data Structures and Algorithms Using Python, by Rance D. Necaise. Linked Structures – 12 AppendingAppending NodesNodes Example: append 21 to the list. self._ self._ new_node self._ self._ © 2011 John Wiley & Sons, Data Structures and Algorithms Using Python, by Rance D. Necaise. Linked Structures – 13 AppendingAppending NodesNodes Given the head and tail reference, we can add an item to a linked list. new_node = ListNode(item, None) if self._head is None: # list is empty self._head = new_node else : self._tail.next = new_node self._tail = new_node © 2011 John Wiley & Sons, Data Structures and Algorithms Using Python, by Rance D. Necaise. Linked Structures – 14 LinkedLinked Queue...Queue... © 2011 John Wiley & Sons, Data Structures and Algorithms Using Python, by Rance D. Necaise. Linked Structures – 15 TraversingTraversing thethe NodesNodes We can traverse the nodes using a temporary external reference variable. self._ Initialize a temporary reference to the head node. self._ cur_node Visit the node. © 2011 John Wiley & Sons, Data Structures and Algorithms Using Python, by Rance D. Necaise. Linked Structures – 16 TraversingTraversing thethe NodesNodes Advance the temporary reference to the next node using the link field and visit that node. self._ cur_node © 2011 John Wiley & Sons, Data Structures and Algorithms Using Python, by Rance D. Necaise. Linked Structures – 17 TraversingTraversing thethe NodesNodes Repeat the process until the reference falls off the end of the list. self._ cur_node self._ cur_node © 2011 John Wiley & Sons, Data Structures and Algorithms Using Python, by Rance D. Necaise. Linked Structures – 18 TraversingTraversing thethe NodesNodes Repeat the process until the reference falls off the end of the list. self._ cur_node self._ cur_node © 2011 John Wiley & Sons, Data Structures and Algorithms Using Python, by Rance D. Necaise. Linked Structures – 19 TraversalTraversal CodeCode Given the head reference, we can traverse the nodes. def print_list(self): cur_node = self._head while cur_node is not None : print(cur_node.data) cur_node = cur_node.next © 2011 John Wiley & Sons, Data Structures and Algorithms Using Python, by Rance D. Necaise. Linked Structures – 20.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    20 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us