Fork me on GitHub

数据结构---栈与队列(1)

一、栈

栈,LIFO表,只允许在栈的一端进行操作,称为栈顶。不允许操作得一端称为栈底。

栈有几个基本操作,分别是:

(1)Stack()
     构造一个空栈S。
(2)Empty()
     判栈空。若为空栈,则返回TRUE,否则返回FALSE。
(3)Full()
     判栈满。若为满栈,则返回TRUE,否则返回FALSE。
注意:
     该运算只适用于栈的顺序存储结构。
(4)Push(x)
     进栈。若栈S不满,则将元素x插入S的栈顶。
(5)Pop()
     退栈。若栈S非空,则将S的栈顶元素删去,并返回该元素。
(6)GetTop()
     取栈顶元素。若栈S非空,则返回栈顶元素,但不改变栈的状态。

    我想的是用栈完成表达式的计算,但是花了两天时间都没搞定。本来是想使用微软提供得Stack()类,其定义如下:

Code

 

 

但是,有很多问题不能解决,比如判断栈的非空,我想的办法是:stack.Count!=0,获得栈顶元素想的办法是:(char)stack.Peek(),但是Peek()在栈为空的情况下,返回是会出错的。想了很久,还是自己写一个符合要求得栈来试一试。参照网上于是有了下面的myStack()类:

Code

 

这样便可满足我所需要得条件,于是又写一个类来完成表达式得计算。

Code

 

总算完成了栈的部分,中缀表达式转后缀表达式得准则,网上很多介绍,我摘抄到了本子上。接下来,自己再不查
资料的情况下完成一次就ok啦。

posted @ 2009-02-14 15:43  idoku  阅读(230)  评论(0编辑  收藏  举报