Question: We have all read about or heard about the stack class, but many of us have probably never found a reason to use the LIFO object. I am curious to hear of real world solutions that used this object and why. 

<http://msdn.microsoft.com/en-us/library/system.collections.stack.aspx>

I recently saw an example where a programmer used a stack to keep track of his current position while traversing a hierarchical data source. As he moved down the hierarchy, he pushed his position identifier on to the stack and as he moved back up he popped items off the stack. I thought this was a very efficent way to keep track of his current position in a mamoth hierarchy. I had never seen this before.

Anyone else have any examples?

Answer: 
You can validate string inputs that require balanced tokens. Think LISP:

```
(+ (- 3 2) (+ (+ 4 5) 11))

```

When you hit an opening paren:

```
stack.Push("(")

```

Then when you hit a closing paren:

```
stack.Pop()

```

If there are any tokens left in your stack when you're done, it's not balanced.

You can get fancier and validate proper nesting in inputs like HTML. In a highly-contrived example:

```
//see opening body
stack.Push("body")

//see opening div
stack.Push("div")

//see opening p
stack.Push("p")

///see closing div
if(!stack.Pop().Equal("div")){
    //not balanced
}

```
I've used stacks for image processing, where the "processing language" must be specified in a URL. A stack-based form lets you represent a tree of operations in an easy-to-parse, easy-to-think-about form.

See:

<http://www.hackification.com/2008/10/29/stack-based-processing-part-1/>

and

<http://www.hackification.com/2008/10/29/stack-based-processing-part-2/>