Chapter 12 Abstract Data Type
Understand the concept of an abstract data type (ADT). Understand the concept of a linear list as well as its operations and applications. After reading this chapter, the reader should be able to: O BJECTIVES 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.
BACKGROUNDBACKGROUND 12.1
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.
The concept of abstraction means: 1. You know what a data type can do. 2. How it is done is hidden. Note:
Queue problem Queue simulation queue enqueuing dequeuing
Abstract Data Type 1.Declaration of data 2.Declaration of operations 3.Encapsulation of data and operations Note:
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.
Figure 12-1 Model for ADT
LINEARLISTSLINEARLISTS 12.2
Figure 12-2 Linear list Linear List is a list in which each element has a unique successor.
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.
Figure 12-4 Insertion in a general linear list with ordered data
Figure 12-5 Deletion from a linear list
Figure 12-6 Retrieval from a linear list
Figure 12-7 Traversal of a linear list Traversal is an operation in which all elements in the list are processed sequentially, one by one.
Implementation Two common methods: Array Linked list
STACKSSTACKS 12.3
Figure 12-8 Three representations of a stack 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.
Figure 12-9 Push operation in a stack
Figure Pop operation in a stack
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
Implementation Two common methods: 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
QUEUESQUEUES 12.4
Figure Queue representation 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.
Figure Enqueue operation
Figure Dequeue operation
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
Implementation Two common methods: Array Linked list (more common) Applications found in virtually every OS and network and in countless other areas.
TREESTREES 12.5
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.
Figure Representation of a tree
Trees 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.
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.
Figure Tree terminology Height : 3
Figure Subtrees
BINARYTREESBINARYTREES 12.6
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) H max = N H min = [log 2 N] +1 # of nodes of a binary tree – (Given height H) N min = H N max = 2 H - 1
Figure Binary tree
Figure Examples of binary trees
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 = H L - H R 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.
A BC D F E
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
Figure Depth-first traversal of a binary tree NLR LNR LRN
Figure Preorder traversal of a binary tree A, B, C, D, E, F
Figure Inorder traversal of a binary tree C, B, D, A, E, F
Figure Postorder traversal of a binary tree C, D, B, F, E, A
Figure Breadth-first traversal of a binary tree
Implementation 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: 1. Infix expression 2. Postfix expression – produced by Postorder traversal 3. Prefix expression – produced by Preorder traversal
Figure Expression tree Infix expression: Prefix expression: + * a + b c d Postfix expression: a b c + * d +
GRAPHSGRAPHS 12.7
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.
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.
Figure Directed and undirected graphs
Figure Add vertex
Figure Delete vertex
Figure Add edge
Figure Delete edge
Figure Find vertex
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.
Figure Depth-first traversal of a graph 在不同的資料結構下,即使起始點相同,產生的順序亦有所不同。
Figure Breadth-first traversal of a graph 在不同的資料結構下,即使起始點相同,產生的順序亦有所不同。
Implementation Two common methods: 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.
Figure 12-35: Part I Graph implementations Weight (e.g. distance between networks in an internetwork)
Figure 12-35: Part 2 Graph implementations