3.2.6 · HinglishLinear Data Structures

Stack applications — balanced parentheses, infix-to-postfix, function call stack

1,837 words8 min readRead in English

3.2.6 · Coding › Linear Data Structures


1. Balanced Parentheses

HOW (algorithm):

  1. Har character ke liye:
    • Agar woh opener hai ( [ {push karo.
    • Agar woh closer hai → agar stack empty ho → fail; warna pop karo aur check karo ki match karta hai ya nahi.
  2. End mein, stack empty honi chahiye (koi unfulfilled promises nahi).

2. Infix → Postfix (Shunting-Yard idea)

HOW (algorithm): left→right scan karo, ek operator stack rakho, output banao:

  • Operand → output mein append karo.
  • ( → push karo.
  • )( tak output mein pop karo; ( ko discard karo.
  • Operator o → jab tak stack top ek operator hai higher precedence ke saath, ya equal precedence aur o left-associative hai → use output mein pop karo. Phir o push karo.
  • End → sab kuch output mein pop karo.
Figure — Stack applications — balanced parentheses, infix-to-postfix, function call stack

3. The Function Call Stack


Recall Feynman: ek 12-saal ke bacche ko samjhao

Socho plates ka ek stack. Sirf upar se add ya liya ja sakta hai. Brackets boxes kholne jaisi hain: jo box sabse baad khola, wahi sabse pehle band karna padega — toh har khule box ko stack karo aur close karne par pop karo. Sums ke liye, stack ek "weak" plus-sign ko wait karne deta hai jab ek "strong" times-sign pehle jump karta hai. Aur jab ek task koi helper task call kare, toh pehla task stack par wait karta hai jab tak helper finish nahi ho jaata — last started, first finished.


Flashcards

Stack ki kaunsi property use nested structures ke liye perfect banati hai?
LIFO — sabse recently open item ko pehle close/resolve karna hota hai.
Balanced-parentheses mein success ke liye kaunsi do conditions zaroori hain?
Har closer ne popped opener se match kiya HO AUR end mein stack empty ho.
( aur ) count karna kyun fail karta hai?
Yeh order/nesting ignore karta hai, jaise )( aur ([)] count pass karte hain lekin unbalanced hain.
Infix→postfix mein operand par kya karte ho?
Use directly output mein append karo.
Infix→postfix mein ) par kya karte ho?
( tak operators ko output mein pop karo, phir ( discard karo.
Jab operator o aata hai, toh stack top ko kab pop karte ho?
Jab tak top ek operator ho higher precedence ka, ya equal precedence ka jab o left-associative ho.
a + b * c ko postfix mein convert karo.
a b c * +
(a + b) * c ko postfix mein convert karo.
a b + c *
^ ko specially kyun treat kiya jaata hai?
Yeh right-associative hai, toh equal-precedence ^ ko pop nahi karte.
Function stack frame kya store karta hai?
Return address, parameters, local variables, saved registers.
Jo call sabse baad start hui, woh pehle kyun return karti hai?
Ek caller apne callee ke return hone tak pause rehta hai — pure LIFO unwinding.
Recursion mein stack overflow kyun hota hai?
Bahut zyada un-returned frames (jaise missing/late base case) stack memory khatam kar dete hain.

Connections

  • Stack — ADT and Implementation (yahan use ki gayi LIFO operations)
  • Recursion and the Call Stack
  • Expression Trees and Evaluation
  • Postfix Evaluation Algorithm
  • Queues (contrast: FIFO vs LIFO)
  • Operator Precedence and Associativity

Concept Map

models

applies to

applies to

applies to

opener

closer

valid needs

catches crossing

uses

driven by

produces

orders

LIFO stack
last in first out

Nested matched
structure

Balanced parentheses

Infix to postfix

Function call stack

Push opener

Pop and match

Stack empty at end

Operator precedence

Operator stack waits

Postfix RPN output