Computer Notes - Data Structures - 6

Embed Size (px)

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/