0% found this document useful (0 votes)
60 views20 pages

Necaise List Slides

The document discusses singly linked lists and their implementation using nodes. Each node contains a data field and a reference to the next node. Key concepts covered include traversing the list using a temporary reference, prepending and appending nodes to the list, and using a tail reference when appending.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
60 views20 pages

Necaise List Slides

The document discusses singly linked lists and their implementation using nodes. Each node contains a data field and a reference to the next node. Key concepts covered include traversing the list using a temporary reference, prepending and appending nodes to the list, and using a tail reference when appending.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 20

Singly-Linked Lists

© 2011 John Wiley & Sons, Data Structures and Algorithms Using Python, by Rance D. Necaise. Modifications by Nathan Sprague
Linked Structure

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
Linked List

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
Linked List

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
Singly Linked List

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
Node Definition

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
Prepending Nodes


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
Prepending Nodes

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
Prepending Nodes

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
Removing The First Node


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
Linked Stack...

© 2011 John Wiley & Sons, Data Structures and Algorithms Using Python, by Rance D. Necaise. Linked Structures – 11
Using a Tail Reference

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
Appending Nodes

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
Appending Nodes

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
Linked Queue...

© 2011 John Wiley & Sons, Data Structures and Algorithms Using Python, by Rance D. Necaise. Linked Structures – 15
Traversing the Nodes

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
Traversing the Nodes

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
Traversing the Nodes

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
Traversing the Nodes

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
Traversal Code

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

You might also like