The Most Commonlyused Data Structures Terence Parr USF

  • Slides: 14
Download presentation
The Most Commonly-used Data Structures Terence Parr USF

The Most Commonly-used Data Structures Terence Parr USF

Introduction £Abstract data types £Data structures (implementations) £Combinations

Introduction £Abstract data types £Data structures (implementations) £Combinations

Abstract Data Types £ List ¤stack, queue, prioritized queue, … £ Set (unordered, unique)

Abstract Data Types £ List ¤stack, queue, prioritized queue, … £ Set (unordered, unique) £ Dictionary (also called Map) £ Graph (directed or undirected) £ Tree ¤Binary tree £ Choose via: ¤access pattern, properties, element relationships £ Implementations chosen to optimize time/space

List £Operations: add, get, insert, delete, find ¤queue: add to tail, get only from

List £Operations: add, get, insert, delete, find ¤queue: add to tail, get only from head ¤stack: add to “top”, delete from “top” £Typical implementation: array or linked list £Examples: list of users, list of books

Set £Operations: add, delete, contains £Typical implementation: bit vector (if elements are integers) or

Set £Operations: add, delete, contains £Typical implementation: bit vector (if elements are integers) or hash table £Examples: set of universities, set of students

Dictionary £Operations: map x->y, get x, delete x £Typical implementation: hash table £Examples: ¤student

Dictionary £Operations: map x->y, get x, delete x £Typical implementation: hash table £Examples: ¤student -> userid ¤student -> list of classes

Graph £ Collection of nodes connected by directed or undirected edges with or without

Graph £ Collection of nodes connected by directed or undirected edges with or without labels £ Path==sequence of edges £ Operations: add node, add edge x->y, delete node, delete edge £ Typical implementation: node has list of edges that point to other nodes £ Examples: network simulation, email trail between employees (social network), finite automata

Tree £ A kind of directed graph with unique edge path from node x

Tree £ A kind of directed graph with unique edge path from node x to y £ Children: emanating edges, Root: topmost node, Leaves: nodes w/o children £ Operations: add child, delete a child £ Typical implementation: node has list of children (again, a restricted graph) £ Examples: organization chart, class hierarchy, expression tree £ Binary tree: at most 2 children per node

Implementations

Implementations

Linked list £head, tail pointers £wrapper to hold value and “next” £Operations: ¤get O(1)

Linked list £head, tail pointers £wrapper to hold value and “next” £Operations: ¤get O(1) ¤others O(n)

Hash table £ Fast implementation of a dictionary; like an associative memory; maps key

Hash table £ Fast implementation of a dictionary; like an associative memory; maps key to value £ Idea: break up large search space into many smaller spaces ¤“hash function” tells you which of the smaller spaces (“buckets”) has element of interest ¤search linearly within smaller space ¤simple hash of int: hash(x)=x; hash of string: sum of char values £ Array of lists; each list is a bucket of key/value pairs £ bucket index(key) = hash(key) % num_buckets

Hash table 2

Hash table 2

Tree £Node has list of children; need root ptr CEO + 3 * 4

Tree £Node has list of children; need root ptr CEO + 3 * 4 President 5 VP Sales VP Eng.

Graph £States or nodes have list of edges to other states Mary Jim Tim

Graph £States or nodes have list of edges to other states Mary Jim Tim Jen Chris