0% found this document useful (0 votes)
7 views

Lecture 2

The document discusses different data structures including lists, multi-lists, trees, and priority queues. It describes list operations like create, destroy, find, insert, remove and properties like size and ordering. Applications of lists are also covered.

Uploaded by

demro channel
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

Lecture 2

The document discusses different data structures including lists, multi-lists, trees, and priority queues. It describes list operations like create, destroy, find, insert, remove and properties like size and ordering. Applications of lists are also covered.

Uploaded by

demro channel
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 13

CSE 326: Data Structures

Lecture #1
Lists, MultiLists & Trees

Today’s Outline
• Things Bart Forgot (handouts)
• How Homework Works
• Project Guidelines & Forming Teams
• Lists (from Monday)
• Multi-lists
• Priority Queues

1
Homework
• Quiz on Friday
– lasts about 10 minutes in class
– what you get right counts toward homework
– what you get wrong becomes short answer for
homework
– quiz returned on Monday
• Homework due Thursday
– turn in at the start of section

Project Guidelines & Teams

2
List ADT (review)
• List operations
– Create/Destroy

( A 1 A2 An )
Length … A= n
length n-1
– Find
– Insert/Remove
– Next/Previous
• List properties
– Ai precedes Ai+1 for 1 i<n
– Ai succeeds Ai-1 for 1 < i n
– Size 0 list is defined to be the empty list ()

Applications
• Everything!
– Class list
– compilers: list of functions in a program,
statements in a function
– graphics: list of triangles to be drawn to
the screen
– operating systems: list of programs
running
– music: compose crazy hard
transcendental études
– other data structures: queues, stacks!

3
Iterators
• General method of examining collections

List<Object> *list;
Object x;
...
ListItr<Object> *i = list->first();
while ( i->hasNext() ) {
x = i->next();
}

List Operations
• Iteration operations:
– ListItr<Object> first()
– ListItr<Object> kth(int)
– ListItr<Object> last()
• Main operations:
– ListItr<Object> find(Object)
– void insert(Object, listItr<Object>)
– void remove(ListItr<Object>)
– bool isEmpty()

4
Application: Polynomial ADT
Ai is the coefficient of the xn-i term:
3x2 + 2x + 5 ( 3 2 5 )

8x + 7 ( 8 7 )

x2 + 3 ( 1 0 3 )

Problem?

x2001 + 1
( 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 )

5
Sparse List Data Structure (?):
x2001 + 1

( <1 2001> <1 0> )

Linked List vs. Array


1 1 1 1
2001 0 2001 0

Addition of Two Polynomials


• Similar to merging two sorted lists
15+10x50+3x1200

p 15 10 3
0 50 1200

5+30x50+4x100
q 5 30 4
0 50 100
r
20 40 4 3
0 50 100 1200

6
Other Data Structures for Lists
• Doubly Linked List

2 3 11 7

• Circular List

c d e f

Multiple Linked Lists


• Many ADTS such as graphs, relations, sparse
matrices, multivariate polynomials use
multiple linked lists
• Several options
– array of lists
– lists of lists
– multi lists
• General principle throughout the course: use
one ADT to implement a more complicated
one.

7
Array of Linked Lists:
Adjacency List for Graphs

1 3

2
5 4

G
•Array G of unordered
1 5 2
linked lists
2 4 3 5
•Each list entry
3 1 4 corresponds to an edge
4 5 4 in the graph
5

Reachability by Marking
• Suppose we want to mark all the nodes in the
graph which are reachable from a given node k.
– Let G[1..n] be the adjacency list rep. of the graph
– Let M[1..n] be the mark array, initially all falses.

mark(int i)
{ M[i] =
true; x =
G[i]
while (x !=
NULL) {
if (M[x->node] == false)
mark(G[x->node])
x = x->next
}
}

8
Thoughts on Reachability
• The marking algorithm visits each node and
each edge at most once. Why?
• This marking algorithm uses Depth First
Search. DFS uses a stack to track nodes.
Where?
• Graph reachability is closely related to
garbage collection
– the nodes are blocks of memory
– marking starts at all global and active local
variables
– the marked blocks are reachable from a
variable
– unmarked blocks are garbage

MultiLists

9
Trees
• Family Trees
• Organization Charts
• Classification trees
– what kind of flower is this?
– is this mushroom poisonous?
• File directory structure
– folders, subfolders in Windows
– directories, subdirectories in UNIX
• Non-recursive procedure call chains

Tree Terminology
A
root:
leaf:
B C
child:
parent:
sibling: D E F G
ancestor:
descendent: H I
subtree:

J K L MN

10
More Tree Terminology
depth: A

height: B C

degree: D E F G
branching factor:
H I
preorder traversal:
J K L MN
postorder traversal:

One More Tree Terminology


Slide
binary:

n-ary:
B C

D E F G
complete:
H I J

11
Tree Calculations
t
• Find the longest
undirected path in
a tree
• Might be:

Tree Calculations Example


A

B C

D E F G

H I

J K L MN

12
To Do
• Subscribe to Mailing List
• Form teams
• Start Project I
• Read chapter 6 in the book
• Think about whether you like this
homework format

Coming Up
• Templates Tutorial tomorrow
– during section – 10:50 in GUG 410
• More Priority Queue Operations
• Mergeable Priority Queues
• First Quiz (Friday June 22nd)
• First project due (Wednesday June 27th)

13

You might also like