Download presentation
Presentation is loading. Please wait.
1
Chapter 12 Abstract Data Type
2
OBJECTIVES After reading this chapter, the reader should be able to:
Understand the concept of an abstract data type (ADT). Understand the concept of a linear list as well as its operations and applications. Understand the concept of a stack as well as its operations and applications. Understand the concept of a queue as well as its operations and applications. Understand the concept of a tree as well as its operations and applications. Understand the concept of a graph as well as its operations and applications.
3
12.1 BACKGROUND
4
Abstract Data Type (ADT)
An Abstract Data Type (ADT) is a data structure and a collection of functions which operate on the data structure. Stack – The operations new(), push(v, S), top(S), and pop(S) may be defined with axiomatic semantics as following. new() returns a stack pop(push(v, S)) = S top(push(v, S)) = v where S is a stack and v is a value.
5
Note: The concept of abstraction means: 1. You know what a data type can do How it is done is hidden.
6
Queue problem Queue simulation enqueuing dequeuing queue
7
Note: Abstract Data Type Declaration of data Declaration of operations Encapsulation of data and operations
8
Stack problem Stack – The operations new(), push(S, v), top(S), and popoff(S) may be defined with axiomatic semantics as following. new() returns a stack popoff(push(S, v)) = S top(push(S, v)) = v where S is a stack and v is a value. The pop operation is a combination of top, to return the top value, and popoff, to remove the top value.
9
Model for ADT Figure 12-1
10
12.2 LINEAR LISTS
11
Linear list Figure 12-2 Linear List is a list in which each element has a unique successor.
12
Categories of linear lists
Figure 12-3 Categories of linear lists Data can be inserted and deleted anywhere. Data can only be inserted and deleted at the ends of the structure.
13
Insertion in a general linear list with ordered data
Figure 12-4
14
Deletion from a linear list
Figure 12-5 Deletion from a linear list
15
Retrieval from a linear list
Figure 12-6 Retrieval from a linear list
16
Traversal of a linear list
Figure 12-7 Traversal is an operation in which all elements in the list are processed sequentially, one by one.
17
Implementation Two common methods: Array Linked list
18
12.3 STACKS
19
Three representations of a stack
Figure 12-8 Stacks A restricted linear list in which all additions and deletions are made at one end, called the top. A LIFO (Last In, First Out) data structure.
20
Push operation in a stack
Figure 12-9
21
Pop operation in a stack
Figure 12-10
22
Example 1 Show the result of the following operations on a stack S. push (S , 10) push (S , 12) push (S , 8) if not empty (S), then pop (S) push (S , 2) Solution
23
Implementation Applications Two common methods: Reversing data Parsing
Array Linked list (more common) Applications Reversing data 1,2,3,4 → 4,3,2,1 Parsing Unmatched parentheses in an algebraic expression Postponing data Postfix: ab+c* → (a+b)*c, abc+* → a*(b+c) Backtracking steps Computer gaming
24
12.4 QUEUES
25
Queue representation Queues
Figure 12-12 Queues A restricted linear list in which data can only be inserted at one end (rear) and deleted from the other end (front). A FIFO (First In, First Out) data structure.
26
Enqueue operation Figure 12-13
27
Dequeue operation Figure 12-14
28
Example 2 Show the result of the following operations on a queue Q. enqueue (Q , 23) if not empty (Q), dequeue (Q) enqueue (Q , 20) enqueue (Q , 19) if not empty (Q), dequeue (Q) Solution
29
Implementation Two common methods: Array Linked list (more common) Applications found in virtually every OS and network and in countless other areas.
30
12.5 TREES
31
Trees A Tree consists of
a finite set of elements called Nodes a finite set of directed lines, called Branches, that connect the nodes Degree of a node – number of branches associated with the node. Indegree branch Outdegree branch Root – The first node of a tree Indegree : 0 Other nodes – Indegree : 1 All nodes – outdegree : 0, 1 or more.
32
Representation of a tree
Figure 12-16 Representation of a tree
33
Trees Leaf – Internal nodes – a node that is not a root or a leaf.
Outdegree : 0 Internal nodes – a node that is not a root or a leaf. Parent – A node with successors outdegree : > 0 Child – A node with a predecessor indegree : 1 Siblings – two or more nodes with the same parent. Ancestor – any node in the path from the root to the node. Descendant – any node in the path from the node to a leaf.
34
Trees Path – a sequence of nodes in which each node is adjacent to the next one. Level of a node – its distance from the root. Root : 0 Height (Depth) of the tree – the level of the leaf in the longest path from the root plus 1. Subtree – any connected structure below the root.
35
Figure 12-17 Tree terminology Height : 3
36
Figure 12-18 Subtrees
37
12.6 BINARY TREES
38
Binary Trees Binary tree – A tree in which no node can have more than two subtrees. Null tree - A tree with no node. Height of a Binary Tree – (with N nodes) Hmax = N Hmin = [log2N] +1 # of nodes of a binary tree – (Given height H) Nmin = H Nmax = 2H - 1
39
Binary tree Figure 12-19
40
Examples of binary trees
Figure 12-20
41
Balanced Trees The distance of a node from the root determines how efficiently it can be located. Balance Factor of a Binary Tree – is the difference in height between its left and right subtrees. B = HL - HR A binary tree is balanced if the height of its subtrees differs by no more than 1 (B = -1, 0, or +1) and its subtrees are also balanced.
42
Binary Tree Traversal Binary Tree Traversal each node of the tree be processed once and only once in a predetermined sequence. Depth-First Traversal – Preorder Traversal (NLR) – Inorder Traversal (LNR) – Postorder Traversal (LRN) – Need a stack Breadth-First Traversal – process all of the children of a node before proceeding with the next level. Need a queue
43
Depth-first traversal of a binary tree
Figure 12-21 NLR LNR LRN
44
Preorder traversal of a binary tree
Figure 12-22 A, B, C, D, E, F
45
Inorder traversal of a binary tree
Figure 12-23 C, B, D, A, E, F
46
Postorder traversal of a binary tree
Figure 12-24 C, D, B, F, E, A
47
Breadth-first traversal of a binary tree
Figure 12-25 Breadth-first traversal of a binary tree
48
Implementation Applications
A binary tree is normally implemented as a linked list. Applications Expression tree – a binary tree with the following properties: Each leaf is an operand The root and internal nodes are operators. Subtrees are subexpressions, with the root being an operator. Three different expression formats: Infix expression Postfix expression – produced by Postorder traversal Prefix expression – produced by Preorder traversal
49
Expression tree Infix expression: Prefix expression: + * a + b c d
Figure 12-26 Infix expression: Prefix expression: + * a + b c d Postfix expression: a b c + * d +
50
12.7 GRAPHS
51
Graphs A Graph consists of
A set of vertices (sing. vertex) and A set of lines (connecting pairs of vertices) Directed graph (digraph) – each line has a direction to its successor - arc Undirected graph – each line has no direction – edge Adjacent vertices (neighbors) – two vertices directly connected by a line Path – a sequence of vertices in which each vertex is adjacent to the next one. Cycle – a path consisting of at least three vertices that starts and ends with the same vertex.
52
Graphs Two vertices are said to be connected if there is a path between them. A graph is said to be connected (suppressing direction) if there is a path from any vertex to any other vertex. A directed graph is strongly connected if there is a path from each vertex to every other vertex. A directed graph is weekly connected if at least two vertices are not connected.
53
Directed and undirected graphs
Figure 12-27
54
Add vertex Figure 12-28
55
Delete vertex Figure 12-29
56
Add edge Figure 12-30
57
Delete edge Figure 12-31
58
Find vertex Figure 12-32
59
Traverse Graph You must somehow ensure that you process the data in each vertex only once. Visited flag Two standard graph traversals Depth-first traversal – you process a vertex’s descendants before you move to an adjacent vertex. Breadth-first traversal – you process all adjacent vertices of a vertex before going to the next level.
60
Depth-first traversal of a graph
Figure 12-33 在不同的資料結構下,即使起始點相同,產生的順序亦有所不同。
61
Breadth-first traversal of a graph
Figure 12-34 在不同的資料結構下,即使起始點相同,產生的順序亦有所不同。
62
Implementation Applications Two common methods: Network
Array (adjacency matrix) Linked list (adjacency list) Applications Network Weighted graph - a graph with weighted lines. Minimum Spanning Tree A spanning tree is a tree that contains all of the vertices in the graph. A minimum spanning tree is a spanning tree such that the sum of its weights is the minimum.
63
Graph implementations
Figure 12-35: Part I Weight (e.g. distance between networks in an internetwork)
64
Graph implementations
Figure 12-35: Part 2
65
1 2 3 4 5 6 7
66
10 10 20 30 20 40
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.