670 likes | 686 Vues
Chapter 12. Abstract Data Type. O BJECTIVES. 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.
E N D
Chapter 12 AbstractData Type
OBJECTIVES 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. Understand the concept of an abstract data type (ADT). After reading this chapter, the reader should be able to:
12.1 BACKGROUND
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.
Note: The concept of abstraction means:1. You know what a data type can do.2. How it is done is hidden.
Queue problem • Queue simulation enqueuing dequeuing queue
Note: • Abstract Data Type • Declaration of data • Declaration of operations • Encapsulation of data and operations
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.
Model for ADT Figure 12-1
12.2 LINEAR LISTS
Linear list Figure 12-2 • Linear Listis a list in which each element has a unique successor.
Figure 12-3 Categories of linear lists • Data can be inserted and deletedanywhere. • Data can only be inserted and deleted at the ends of the structure.
Insertion in a general linear list with ordered data Figure 12-4
Figure 12-5 Deletion from a linear list
Figure 12-6 Retrieval from a linear list
Traversal of a linear list Figure 12-7 • Traversalis an operation in which all elements in the list are processed sequentially, one by one.
Implementation • Two common methods: • Array • Linked list
12.3 STACKS
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.
Push operation in a stack Figure 12-9
Pop operation in a stack Figure 12-10
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
12.4 QUEUES
Queue representation 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.
Enqueue operation Figure 12-13
Dequeue operation Figure 12-14
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) • Applicationsfound in virtually every OS and network and in countless other areas.
12.5 TREES
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 12-16 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 pathfrom the root to the node. • Descendant – any node in the pathfrom 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 12-17 Tree terminology Height : 3
Figure 12-18 Subtrees
12.6 BINARY TREES
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
Binary tree Figure 12-19
Examples of binary trees Figure 12-20
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 balancedif the height of its subtrees differs by no more than 1 (B = -1, 0, or +1) and its subtrees are also balanced.
A B C D E F
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
Depth-first traversal of a binary tree Figure 12-21 • NLR LNR LRN
Preorder traversal of a binary tree Figure 12-22 • A, B, C, D, E, F
Inorder traversal of a binary tree Figure 12-23 • C, B, D, A, E, F
Postorder traversal of a binary tree Figure 12-24 • C, D, B, F, E, A
Figure 12-25 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: • Infix expression • Postfix expression – produced by Postorder traversal • Prefix expression – produced by Preorder traversal
Expression tree Figure 12-26 • Infix expression: • Prefix expression: + * a + b c d • Postfix expression: a b c + * d +