By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
446,147 Members | 1,590 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 446,147 IT Pros & Developers. It's quick & easy.

Stack or Queue?

P: n/a
I have a rather pecurliar C++ assignment. I need to create a program (using a stack or queue) to verify if the grouping symbols in an arithmetic expression match. For example:
{25 + (3 - 6) * 8}
In this case they match (one corresponding left and right bracket for both). In this case:
(25 + (3 - 6} * 8)
they don't match (there is a } that should be a )). If anyone can give me an idea or something to get me heading in the correct direction, I'd appreciate it.
Please note: I HAVE to use a stack or queue.
Dec 9 '05 #1
Share this Question
Share on Google+
4 Replies


P: n/a

deanfamily wrote:
I have a rather pecurliar C++ assignment. I need to create a program (using a stack or queue) to verify if the grouping symbols in an arithmetic expression match. For example:
{25 + (3 - 6) * 8}
In this case they match (one corresponding left and right bracket for both). In this case:
(25 + (3 - 6} * 8)
they don't match (there is a } that should be a )). If anyone can give me an idea or something to get me heading in the correct direction, I'd appreciate it.
Please note: I HAVE to use a stack or queue.


The answer to this is REALLY easy. I am reluctant to even give a hint.

Here is your hint...

What are the main operations of a stack or queue? (in general, not the
std:: versions specifically)

Dec 9 '05 #2

P: n/a
deanfamily wrote:
I have a rather pecurliar C++ assignment. I need to create a program (using a stack or queue) to verify if the grouping symbols in an arithmetic expression match. For example:
{25 + (3 - 6) * 8}
In this case they match (one corresponding left and right bracket for both). In this case:
(25 + (3 - 6} * 8)
they don't match (there is a } that should be a )). If anyone can give me an idea or something to get me heading in the correct direction, I'd appreciate it.
Please note: I HAVE to use a stack or queue.


OK, here's a hint. A stack is LIFO (last in, first out). A queue is
FIFO (first in, first out). When you analyze an arithmetic expression,
and you come across, say, a right parenthesis, do you look at the most
recent symbol you came across (that is, the last thing you added) or
the first symbol you came across (that is, the first thing you added)?

And this isn't a peculiar C++ assignment - sounds like a pretty typical
introductory assignment to me. And a fairly easy one, once you think
it through.

Best regards,

Tom

Dec 9 '05 #3

P: n/a
When is your homework due? Don't you have your textbook with you?
Sashi
roberts.n...@gmail.com wrote:
deanfamily wrote:
I have a rather pecurliar C++ assignment. I need to create a program (using a stack or queue) to verify if the grouping symbols in an arithmetic expression match. For example:
{25 + (3 - 6) * 8}
In this case they match (one corresponding left and right bracket for both). In this case:
(25 + (3 - 6} * 8)
they don't match (there is a } that should be a )). If anyone can give me an idea or something to get me heading in the correct direction, I'd appreciate it.
Please note: I HAVE to use a stack or queue.


The answer to this is REALLY easy. I am reluctant to even give a hint.

Here is your hint...

What are the main operations of a stack or queue? (in general, not the
std:: versions specifically)


Dec 9 '05 #4

P: n/a
deanfamily wrote:
I have a rather pecurliar C++ assignment. I need to create a program
(using a stack or queue) to verify if the grouping symbols in an
arithmetic expression match. For example:
{25 + (3 - 6) * 8}
In this case they match (one corresponding left and right bracket for
both). In this case:
(25 + (3 - 6} * 8)
they don't match (there is a } that should be a )). If anyone can give
me an idea or something to get me heading in the correct direction, I'd
appreciate it.
Please note: I HAVE to use a stack or queue.


Use both. A queue has to begin and end in a parenthesis or a curly brace.
The contents of each queue are the "primary expressions" between the
corresponding symbols. As you encounter an "opening" symbol, start
another queue. As you encounter a "closing" symbol, check the currently
"active" queue and if it's OK, finish it and make a "primary expression"
from it, and add to the previous queue. To maintain active queues, you
will probably need to use a stack.

I don't see any C++ language questions, though.

V
Dec 9 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.