0% found this document useful (0 votes)
60 views22 pages

Computernotes Datastructures 6 111227202305 Phpapp01

The document discusses implementing a stack using a linked list as an alternative to an array. Key points: 1) A linked list avoids size limitations of an array-based stack and allows elements to be inserted and removed in constant time by adding to the head of the list. 2) Common stack operations like push, pop, peek can all be performed in constant time by manipulating the head of the linked list. 3) Converting infix expressions to postfix requires using a stack to manage operator precedence by pushing/popping operators.

Uploaded by

Vam Si
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
60 views22 pages

Computernotes Datastructures 6 111227202305 Phpapp01

The document discusses implementing a stack using a linked list as an alternative to an array. Key points: 1) A linked list avoids size limitations of an array-based stack and allows elements to be inserted and removed in constant time by adding to the head of the list. 2) Common stack operations like push, pop, peek can all be performed in constant time by manipulating the head of the linked list. 3) Converting infix expressions to postfix requires using a stack to manage operator precedence by pushing/popping operators.

Uploaded by

Vam Si
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 22

Class No.

06

Data Structures

http://ecomputernotes.com
Stack Using Linked List
We can avoid the size limitation of a stack
implemented with an array by using a
linked list to hold the stack elements.
As with array, however, we need to decide
where to insert elements in the list and
where to delete them so that push and pop
will run the fastest.
http://ecomputernotes.com
Stack Using Linked List
For a singly-linked list, insert at start or end
takes constant time using the head and current
pointers respectively.
Removing an element at the start is constant
time but removal at the end required traversing
the list to the node one before the last.
Make sense to place stack elements at the start
of the list because insert and removal are
constant time.
http://ecomputernotes.com
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
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
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
Stack Operation: List
int top()
{
return head->get();
}
int IsEmpty()
{
return ( head == NULL );
}

All four operations take constant time.
http://ecomputernotes.com
Stack: Array or List
Since both implementations support stack
operations in constant time, any reason to
choose one over the other?
Allocating and deallocating memory for list
nodes does take more time than preallocated
array.
List uses only as much memory as required by
the nodes; array requires allocation ahead of
time.
List pointers (head, next) require extra memory.
Array has an upper limit; List is limited by
dynamic memory allocation.
http://ecomputernotes.com
Use of Stack
Example of use: prefix, infix, postfix
expressions.
Consider the expression A+B: we think of
applying the operator + to the operands
A and B.
+ is termed a binary operator: it takes
two operands.
Writing the sum as A+B is called the infix
form of the expression.
http://ecomputernotes.com
Prefix, Infix, Postfix
Two other ways of writing the expression
are

+ A B prefix
A B + postfix

The prefixes pre and post refer to the
position of the operator with respect to the
two operands.
http://ecomputernotes.com
Prefix, Infix, Postfix
Consider the infix expression
A + B * C
We know that multiplication is done
before addition.
The expression is interpreted as
A + ( B * C )
Multiplication has precedence over
addition.
http://ecomputernotes.com
Prefix, Infix, Postfix
Conversion to postfix

A + ( B * C ) infix form
http://ecomputernotes.com
Prefix, Infix, Postfix
Conversion to postfix

A + ( B * C ) infix form
A + ( B C * ) convert multiplication

http://ecomputernotes.com
Prefix, Infix, Postfix
Conversion to postfix

A + ( B * C ) infix form
A + ( B C * ) convert multiplication
A ( B C * ) + convert addition
http://ecomputernotes.com
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
Prefix, Infix, Postfix
Conversion to postfix

(A + B ) * C infix form
http://ecomputernotes.com
Prefix, Infix, Postfix
Conversion to postfix

(A + B ) * C infix form
( A B + ) * C convert addition

http://ecomputernotes.com
Prefix, Infix, Postfix
Conversion to postfix

(A + B ) * C infix form
( A B + ) * C convert addition
( A B + ) C * convert multiplication

http://ecomputernotes.com
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
Precedence of Operators
The five binary operators are: addition,
subtraction, multiplication, division and
exponentiation.
The order of precedence is (highest to
lowest)
Exponentiation
Multiplication/division *, /
Addition/subtraction +, -
http://ecomputernotes.com
Precedence of Operators
For operators of same precedence, the
left-to-right rule applies:

A+B+C means (A+B)+C.

For exponentiation, the right-to-left rule
applies

A B C means A ( B C )
http://ecomputernotes.com
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

You might also like