View
225
Download
0
Category
Preview:
Citation preview
8/3/2019 Computer Notes - Data Structures - 6
1/22
Class No.06
Data Structures
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/8/3/2019 Computer Notes - Data Structures - 6
2/22
Stack Using Linked List
We can avoid the size limitation of a stackimplemented with an array by using alinked list to hold the stack elements.
As with array, however, we need to decidewhere to insert elements in the list andwhere to delete them so that push and pop
will run the fastest.
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/8/3/2019 Computer Notes - Data Structures - 6
3/22
Stack Using Linked List
For a singly-linked list, insert at start or endtakes constant time using the head and currentpointers respectively.
Removing an element at the start is constanttime but removal at the end required traversingthe list to the node one before the last.
Make sense to place stack elements at the startof the list because insert and removal areconstant time.
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/8/3/2019 Computer Notes - Data Structures - 6
4/22
Stack Using Linked List
No need for the current pointer; head is enough.
top
2
5
7
1
1 7 5 2
head
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/8/3/2019 Computer Notes - Data Structures - 6
5/22
Stack Operation: List
int pop(){
int x = head->get();
Node* p = head;
head = head->getNext();
delete p;
return x;}
top
2
5
7
1 7 5 2
head
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/8/3/2019 Computer Notes - Data Structures - 6
6/22
Stack Operation: List
void push(int x){
Node* newNode = new Node();
newNode->set(x);
newNode->setNext(head);
head = newNode;}
top
2
5
7
9
7 5 2
head
push(9)
9
newNode
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/8/3/2019 Computer Notes - Data Structures - 6
7/22
Stack Operation: List
int top(){
return head->get();}int IsEmpty()
{return ( head == NULL );
}
All four operations take constant time.
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/8/3/2019 Computer Notes - Data Structures - 6
8/22
Stack: Array or List
Since both implementations support stackoperations in constant time, any reason tochoose one over the other?
Allocating and deallocating memory for list
nodes does take more time than preallocatedarray.
List uses only as much memory as required bythe nodes; array requires allocation ahead of
time. List pointers (head, next) require extra memory.
Array has an upper limit; List is limited bydynamic memory allocation.
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/http://ecomputernotes.com/8/3/2019 Computer Notes - Data Structures - 6
9/22
Use of Stack
Example of use: prefix, infix, postfixexpressions.
Consider the expression A+B: we think of
applying the operator+ to the operandsA and B.
+ is termed a binary operator: it takestwo operands.
Writing the sum as A+B is called the infixform of the expression.
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/8/3/2019 Computer Notes - Data Structures - 6
10/22
Prefix, Infix, Postfix
Two other ways of writing the expressionare
+ A B prefixA B + postfix
The prefixes pre and post refer to theposition of the operator with respect to thetwo operands.
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/8/3/2019 Computer Notes - Data Structures - 6
11/22
Prefix, Infix, Postfix
Consider the infix expressionA + B * C
We know that multiplication is done
before addition.
The expression is interpreted asA + ( B * C )
Multiplication has precedenceoveraddition.
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/8/3/2019 Computer Notes - Data Structures - 6
12/22
Prefix, Infix, Postfix
Conversion to postfix
A + ( B * C ) infix form
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/8/3/2019 Computer Notes - Data Structures - 6
13/22
Prefix, Infix, Postfix
Conversion to postfix
A + ( B * C ) infix form
A + ( B C * ) convert multiplication
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/8/3/2019 Computer Notes - Data Structures - 6
14/22
Prefix, Infix, Postfix
Conversion to postfix
A + ( B * C ) infix form
A + ( B C * ) convert multiplication
A ( B C * ) + convert addition
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/8/3/2019 Computer Notes - Data Structures - 6
15/22
Prefix, Infix, Postfix
Conversion to postfix
A + ( B * C ) infix form
A + ( B C * ) convert multiplication
A ( B C * ) + convert addition
A B C * + postfix form
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/8/3/2019 Computer Notes - Data Structures - 6
16/22
Prefix, Infix, Postfix
Conversion to postfix
(A + B ) * C infix form
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/8/3/2019 Computer Notes - Data Structures - 6
17/22
Prefix, Infix, Postfix
Conversion to postfix
(A + B ) * C infix form
( A B + ) * C convert addition
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/8/3/2019 Computer Notes - Data Structures - 6
18/22
Prefix, Infix, Postfix
Conversion to postfix
(A + B ) * C infix form
( A B + ) * C convert addition
( A B + ) C * convert multiplication
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/8/3/2019 Computer Notes - Data Structures - 6
19/22
Prefix, Infix, Postfix
Conversion to postfix
(A + B ) * C infix form
( A B + ) * C convert addition
( A B + ) C * convert multiplication
A B + C * postfix form
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/8/3/2019 Computer Notes - Data Structures - 6
20/22
Precedence of Operators
The five binary operators are: addition,subtraction, multiplication, division andexponentiation.
The order of precedence is (highest tolowest)
Exponentiation
Multiplication/division *, /
Addition/subtraction +, -
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/8/3/2019 Computer Notes - Data Structures - 6
21/22
Precedence of Operators
For operators of same precedence, theleft-to-right rule applies:
A+B+C means (A+B)+C.
For exponentiation, the right-to-left ruleapplies
A B C means A ( B C )
http://ecomputernotes.com
http://ecomputernotes.com/http://ecomputernotes.com/8/3/2019 Computer Notes - Data Structures - 6
22/22
Infix to Postfix
Infix Postfix
A + B A B +
12 + 60 23 12 60 + 23(A + B)*(C D ) A B + C D *
A B * C D + E/F A B C*D E F/+
http://ecomputernotes com
http://ecomputernotes.com/http://ecomputernotes.com/Recommended