Download Linked data structures and algorithms

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts

Quadtree wikipedia, lookup

Binary search tree wikipedia, lookup

Array data structure wikipedia, lookup

B-tree wikipedia, lookup

Linked list wikipedia, lookup

Transcript
2/22/17
BASIC LINKED DATA
STRUCTURES
Dr. John Georgas, Northern Arizona University
Copyright © John Georgas All Rights Reserved
Outline
2
¨
Current
¤ Data
structures, in general
¤ Arrays
¤ Linked
list
¤ Stack
¤ Queue
Data structures
3
¨
¨
Data structures define a way of storing and
organizing data elements
Data structures set rules for:
¤ What
kind of data is stored?
is data stored?
¤ How can data be accessed?
¤ How can data be inserted?
¤ How can data be removed?
¤ How
¨
Each data structure captures a set of design
decisions about these (and other) questions
1
2/22/17
Python lists and arrays
4
¨
¨
¨
Fundamental structure: Array
¤ Stores data that is the same size
¤ Organized contiguously
¤ Accessible in random order
¤ Fixed sized structure, unless resized
Python lists are built on top of dynamically sized arrays, as an array of
references
¤ References to objects are stored in the array
¤ Objects are stored externally on the heap
Complexity implications
¤ Reference of an index location?
¤ Value change?
¤ Addition of a list element?
¤ Removal of a list element?
Linked List
5
¨
Linked list consists of:
¤ Nodes:
each containing data and a reference to
another node
¤ Structure around nodes: allowing access into sequence
of nodes
¨
It’s all about trade-offs:
¤ Insertion
and removal is cheap
not support random access well (comparatively
expensive)
¤ Does
Variations, bells and whistles
6
¨
¨
¨
¨
Singly-linked list
¤ Structure: Nodes have one reference to the next node
¤ Function: Can only traverse one way
Doubly-linked list
¤ Structure: Nodes have two references, one to the next node and one to the
previous node
¤ Function: Can traverse either way
First and last node references
Counter
¤ A counter of nodes
n
¨
Amortization: Costs of algorithms is distributed among many operations
Circular-linked list
¤ Structure: Last node points back to the first
¤ Function: Complete iteration from any start position
2
2/22/17
Operations of interest, in Python
7
¨
¨
Linked lists, the OO way
¤
LinkedList
n __init_
n add_first, remove_first
n __len__
n __str__
¤
Node
n __init__
n __str__
¤
Iterators
n __init_
n next and StopIteration
n __iter__ from LinkedList
Using a linked list
¤
Creating a new linked list
¤
Adding some elements
¤
Remove some elements
¤
Traverse the linked list with an iterator
Stacks
8
¨
Elements of a stack can only be added to and
removed from the top
¤ Bottom
¨
can not be directly modified
Operations:
¤ pop
– remove element from the top of the stack
¤ push
– add element to the top of the stack
¨
Imposes a last-in, first-out ordering (LIFO)
¨
Built on top of a list, with a limited set of operations
¤ Or,
first-in, last-out
Queues
9
¨
Elements of a queue:
¤
¤
¨
Can only be added to the tail
Can only be removed from the head
Operations:
¤
¤
enqueue – add an element to the tail of the queue
dequeue – remove an element from the head of the queue
¨
Imposes a last-in, last-out ordering (LILO)
¨
Built on top of a list, with a limited set of operations
Variations:
¤
¨
¤
Or, first-in, first-out
Priority queue allows nodes to be marked with a priority
indicator, that overrides traditional ordering
3