0
Infix, prefix and postfix notation <ul><li>A + B Infix </li></ul><ul><li>+ A B Prefix </li></ul><ul><li>A B + Postfix </li...
Basic operations <ul><li>Five basic operations are there </li></ul><ul><ul><li>Addition + </li></ul></ul><ul><ul><li>Subtr...
Some Rules <ul><li>When unparenthesized operators of the same precedence are scanned the order is assumed to be left to ri...
Infix Postfix A + B AB+ A+B-C AB+C- (A+B)*(C-D) AB+CD-* A$B*C-D+E/F/(G+H) AB$C*D-EF/GH+/+ ((A+B)*C-(D-E))$(F+G) AB+C*DE—FG...
Infix Prefix A + B +AB A+B+C -+ABC (A+B)*(C-D) *+AB-CD A$B*C-D+E/F/(G+H) +-*$ABCD//EF+GH ((A+B)*C-(D-E))$(F+G) $-*+ABC-DE+...
Infix to Prefix notation (Example) <ul><li>A + B    + A B </li></ul><ul><li>2.  A + B - C  </li></ul><ul><li>   + A B - ...
Example (Cont…) <ul><li>A$B*C–D+E/F/(G+H) </li></ul><ul><li>A$B*C–D+E/F/(+G H) </li></ul><ul><li>$AB*C–D+E/F/(+GH) </li></...
Example (Cont…) <ul><li>((A+B)*C-(D-E))$(F+G) </li></ul><ul><li>((+AB)*C-(-DE))$(+FG) </li></ul><ul><li>$(*(+AB)C-(-DE))(+...
Evaluating a postfix Expression (Algo) <ul><li>Opndstk = the empty stack </li></ul><ul><li>/* scan the input string readin...
Evaluate :- 6 2 3 + - 3 8 2 / + * 2 $ 3 + Symb opnd1 opnd2 value Opndstk 6 6 2 6,2 3 6,2,3 + 2 3 5 6,5 - 6 5 1 1 3 6 5 1 1...
Circular Queues <ul><li>It is a ring showing, conceptually, a circular buffer. </li></ul><ul><li>This visually shows that ...
Circular Queue (Insertion) <ul><li>void insert(int val) </li></ul><ul><li>  { </li></ul><ul><li>  if((front==0 && rear==MA...
55 44 33 22 11 22 11 55 44 11 55 44 33 22 4 3 2 1 0 1 0 4 3 0 4 3 2 1 Rear Front Front = 0 Rear = max – 1 Queue is full Re...
Circular Queue (Deletion) <ul><li>int deletion() </li></ul><ul><li>  { </li></ul><ul><li>  int k; </li></ul><ul><li>  if(f...
11 44 33 22 11 11 55 44 33 22 0 3 2 1 0 0 4 3 2 1 Rear Front Front = Rear Front = Rear = -1 Rear Front Rear Front If Front...
<ul><li>void display() </li></ul><ul><li>  { </li></ul><ul><li>  int i; </li></ul><ul><li>  if(front==-1) </li></ul><ul><l...
Converting an Expression from Infix to Postfix <ul><li>Opstk = the empty stack; </li></ul><ul><li>While(not end of input) ...
Example – A + B * C Symb 1 A A 2 + A + 3 B AB + 4 * AB + * 5 C ABC + * 6 ABC* + 7 ABC*+
Example 2 (A+B) * C symb Postfix string opstk ( ( A A ( + A ( + B AB ( + ) AB+ * AB+ * C AB + C * AB + C*
Example 3    ((A – (B + C)) * D) $ (E + F) ( A ( ( A (( A A (( - AB ((- ( AB ((-( B ABC ((-( + ABC + ((-( + C ABC + -  ((...
Upcoming SlideShare
Loading in...5
×

Circular queues

1,814

Published on

Circular queues

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,814
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
87
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Circular queues"

  1. 1. Infix, prefix and postfix notation <ul><li>A + B Infix </li></ul><ul><li>+ A B Prefix </li></ul><ul><li>A B + Postfix </li></ul><ul><li>A + (B*C)  A+(BC*)  A(BC*)+  ABC*+ </li></ul><ul><li>(A + B)*C  (AB+)*C  (AB+)C*  AB+C* </li></ul>
  2. 2. Basic operations <ul><li>Five basic operations are there </li></ul><ul><ul><li>Addition + </li></ul></ul><ul><ul><li>Subtraction - </li></ul></ul><ul><ul><li>Multiplication * </li></ul></ul><ul><ul><li>Division / </li></ul></ul><ul><ul><li>Exponentiation $ </li></ul></ul><ul><ul><li>Now following is the order of precedence </li></ul></ul><ul><ul><ul><li>Exponentiation </li></ul></ul></ul><ul><ul><ul><li>Multiplication/Division </li></ul></ul></ul><ul><ul><ul><li>Addition/Subtraction </li></ul></ul></ul>
  3. 3. Some Rules <ul><li>When unparenthesized operators of the same precedence are scanned the order is assumed to be left to right. </li></ul><ul><li>But in case of exponentiation the order is assumed to be from right to left. </li></ul><ul><li>E.g. A+B+C  (A+B)+C </li></ul><ul><li>And A$B$C  A$(B$C) </li></ul>
  4. 4. Infix Postfix A + B AB+ A+B-C AB+C- (A+B)*(C-D) AB+CD-* A$B*C-D+E/F/(G+H) AB$C*D-EF/GH+/+ ((A+B)*C-(D-E))$(F+G) AB+C*DE—FG+$ A-B/(C*D$E) ABCDE$*/-
  5. 5. Infix Prefix A + B +AB A+B+C -+ABC (A+B)*(C-D) *+AB-CD A$B*C-D+E/F/(G+H) +-*$ABCD//EF+GH ((A+B)*C-(D-E))$(F+G) $-*+ABC-DE+FG A-B/(C*D$E) -A/B*C$DE
  6. 6. Infix to Prefix notation (Example) <ul><li>A + B  + A B </li></ul><ul><li>2. A + B - C </li></ul><ul><li> + A B - C </li></ul><ul><li> - + A B C </li></ul><ul><li>(A + B) * (C – D) </li></ul><ul><li> (+ A B) * (- C D) </li></ul><ul><li> *(+ A B)(-C D) </li></ul><ul><li> *+A B – C D </li></ul>4. A-B/(C*D$E) A-B/(C*$DE) A-B/(*C$DE) A-/B(*C$DE) -A/B(*C$DE)
  7. 7. Example (Cont…) <ul><li>A$B*C–D+E/F/(G+H) </li></ul><ul><li>A$B*C–D+E/F/(+G H) </li></ul><ul><li>$AB*C–D+E/F/(+GH) </li></ul><ul><li>*$ABC–D+/EF/(+GH) </li></ul><ul><li>-*$ABCD+//EF(+GH) </li></ul><ul><li>+-$ABCD+//EF+GH </li></ul>
  8. 8. Example (Cont…) <ul><li>((A+B)*C-(D-E))$(F+G) </li></ul><ul><li>((+AB)*C-(-DE))$(+FG) </li></ul><ul><li>$(*(+AB)C-(-DE))(+FG) </li></ul><ul><li>$(-*(+AB)C(-DE))(+FG) </li></ul><ul><li>$-*+ABC-DE+FG </li></ul>
  9. 9. Evaluating a postfix Expression (Algo) <ul><li>Opndstk = the empty stack </li></ul><ul><li>/* scan the input string reading one */ </li></ul><ul><li>While(not end of input) </li></ul><ul><li>{ </li></ul><ul><li>symb = next input character; </li></ul><ul><li>if(symb is an operand) </li></ul><ul><li>push(opndstk, symb); </li></ul><ul><li>else </li></ul><ul><li>{ </li></ul><ul><li>opnd2 = pop(opndstk); </li></ul><ul><li>opnd1 = pop(opndstk); </li></ul><ul><li>value = result of applying symb to opnd1 and opnd2; </li></ul><ul><li>push(opndstk, value); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  10. 10. Evaluate :- 6 2 3 + - 3 8 2 / + * 2 $ 3 + Symb opnd1 opnd2 value Opndstk 6 6 2 6,2 3 6,2,3 + 2 3 5 6,5 - 6 5 1 1 3 6 5 1 1,3 8 6 5 1 1,3,8 2 6 5 1 1,3,8,2 / 8 2 4 1,3,4 + 3 4 7 1,7 * 1 7 7 7 2 1 7 7 7,2 $ 7 2 49 49 3 7 2 49 49,3 + 49 3 52 52
  11. 11. Circular Queues <ul><li>It is a ring showing, conceptually, a circular buffer. </li></ul><ul><li>This visually shows that the buffer has no real end and it can loop around the buffer. </li></ul><ul><li>However, since memory is never physically created as a ring, a linear representation is generally used as is done below. </li></ul><ul><li>A circular buffer or ring buffer is a data structure that uses a single, fixed-size buffer as if it were connected end-to-end. </li></ul><ul><li>This structure lends itself easily to buffering data streams . </li></ul>
  12. 12. Circular Queue (Insertion) <ul><li>void insert(int val) </li></ul><ul><li> { </li></ul><ul><li> if((front==0 && rear==MAX-1) || (rear+1==front)) </li></ul><ul><li> printf(&quot; Circular Queue is Full&quot;); </li></ul><ul><li> else </li></ul><ul><li> { </li></ul><ul><li> if(rear==MAX-1) </li></ul><ul><li> rear=0; </li></ul><ul><li> else </li></ul><ul><li> rear++; </li></ul><ul><li> a[rear]=val; </li></ul><ul><li> } </li></ul><ul><li> if(front==-1) </li></ul><ul><li> front=0; </li></ul><ul><li> } </li></ul>
  13. 13. 55 44 33 22 11 22 11 55 44 11 55 44 33 22 4 3 2 1 0 1 0 4 3 0 4 3 2 1 Rear Front Front = 0 Rear = max – 1 Queue is full Rear Front Rear Front Front != 0 & Rear = max-1 Rear = 0 A[rear] = val 33 2 Front !=0 & Rear != max-1 Rear ++ A[rear] = val Inserting an element into queue (all conditions) Since if your queue is empty means (front=-1) then make front =0 & rear = 0 (by rear++) It will become 0 means(-1+1=0)
  14. 14. Circular Queue (Deletion) <ul><li>int deletion() </li></ul><ul><li> { </li></ul><ul><li> int k; </li></ul><ul><li> if(front==-1) </li></ul><ul><li>printf(&quot;Circular Queue is Empty&quot;); </li></ul><ul><li> else </li></ul><ul><li> { </li></ul><ul><li>k=a[front]; </li></ul><ul><li>if(front==rear) </li></ul><ul><li> front=rear=-1; </li></ul><ul><li>else </li></ul><ul><li>{ </li></ul><ul><li> if(front==MAX-1) </li></ul><ul><li> front=0; </li></ul><ul><li> else </li></ul><ul><li> front++; </li></ul><ul><li>} </li></ul><ul><li> } </li></ul><ul><li> return k; </li></ul><ul><li> } </li></ul>
  15. 15. 11 44 33 22 11 11 55 44 33 22 0 3 2 1 0 0 4 3 2 1 Rear Front Front = Rear Front = Rear = -1 Rear Front Rear Front If Front != max-1 & Front !=-1 Front ++ 55 4 Deleting an element into queue (all conditions) If (front=-1) then Queue is empty If Front == max -1 Then Front = 0
  16. 16. <ul><li>void display() </li></ul><ul><li> { </li></ul><ul><li> int i; </li></ul><ul><li> if(front==-1) </li></ul><ul><li> printf(&quot;Circular Queue is Empty&quot;); </li></ul><ul><li> else </li></ul><ul><li> { </li></ul><ul><li> if(rear < front) </li></ul><ul><li> { </li></ul><ul><li>for(i=front;i<=MAX-1;i++) </li></ul><ul><li> printf(&quot;%d &quot;,a[i]); </li></ul><ul><li>for(i=0;i<=rear;i++) </li></ul><ul><li> printf(&quot;%d &quot;,a[i]); </li></ul><ul><li> } </li></ul><ul><li> else </li></ul><ul><li> { </li></ul><ul><li>for(i=front;i<=rear;i++) </li></ul><ul><li> printf(&quot;%d n &quot;,a[i]); </li></ul><ul><li> } </li></ul><ul><li> } </li></ul><ul><li> } </li></ul>
  17. 17. Converting an Expression from Infix to Postfix <ul><li>Opstk = the empty stack; </li></ul><ul><li>While(not end of input) </li></ul><ul><li>{ </li></ul><ul><li>symb = next input character; </li></ul><ul><li>if(symb is an operand) </li></ul><ul><li>add symb to the postfix string </li></ul><ul><li>else </li></ul><ul><li>{ </li></ul><ul><li>while(!empty(opstk) && prcd(stacktop(opstk), symb)) </li></ul><ul><li>{ </li></ul><ul><li> topsymb = pop(opstk); </li></ul><ul><li> add topsymb to the postfix string; </li></ul><ul><li>} </li></ul><ul><li>push(opstk, symb); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>While(!empty(opstk) </li></ul><ul><li>{ </li></ul><ul><li>topsymb = pop(opstk); </li></ul><ul><li>add topsymb to the postfix string; </li></ul><ul><li>} </li></ul>
  18. 18. Example – A + B * C Symb 1 A A 2 + A + 3 B AB + 4 * AB + * 5 C ABC + * 6 ABC* + 7 ABC*+
  19. 19. Example 2 (A+B) * C symb Postfix string opstk ( ( A A ( + A ( + B AB ( + ) AB+ * AB+ * C AB + C * AB + C*
  20. 20. Example 3  ((A – (B + C)) * D) $ (E + F) ( A ( ( A (( A A (( - AB ((- ( AB ((-( B ABC ((-( + ABC + ((-( + C ABC + - ((-( + ) ABC + - ((- ) ABC + - D ( * ABC + - D ( D ABC + - D (* ) ABC + - D * (* $ ABC + - D * ( ABC + - D * $ E ABC + - D * E $( + ABC + - D * E $( F ABC + - D * EF $( + ) ABC + - D * EF + $ ABC + - D * EF + $
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×