Generics question

M

Mike P

I am reading through the basics of generics from several different
sources, and one of the things that is common amongst all of them seems
to be the example of type-safe stack and converting it to be able to use
generics. However, I am not familiar with this and I'm unsure what
exactly the Push and Pop methods are used for, and none of the examples
explain this. Could someone explain it to me?
 
A

Adam Benson

Hi,

Not too sure what level you're coming at this from, so If I've
oversimplified my apologies.

A stack is a bit like an array, but you can only get at the "first"
element - the top of the stack.

For example, If I push these strings on to a stack : "one", "two", "three",
"four" the stack looks like this :

"four" <--- top of the stack
"three"
"two"
"one"

If I now perform a Pop on the stack I get "four" back and the stack looks
like this :

"three" <---- top of the stack
"two"
"one"

If I then push "five" on to the stack it looks like this :

"five" <---- top of the stack
"three"
"two"
"one"

And "five" is what you get if you perform a pop. So you'd use a stack to
queue up objects when it was important to always get the most recently
queued object. They can also be called a LIFO queue - Last In First Out.

HTH,

Adam
==========
 
M

Marc Gravell

To be honest, I'm not sure that a stack is the best example of
generics - a list (List<T>) would be simpler to understand.

However, to answer your question: a stack is a "first in, last out"
store (imagine the spike that you sometimes see on restaurant counters
with food tickets on). "Push" places an item onto the stack spike;
"Pop" takes the *most recent* item back off the spike and returns
it...
so:
[stack: empty]
push "1"
[stack: 1]
push "2"
[stack: 1, 2]
pop: returns 2
[stack: 1]
pop: returns 1
[stack: empty]

Marc
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top