ll_abc

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

这两周学习了关于栈和队列的表示、操作和实现。

栈:先进后出

队:先进先出

两种线性表一般用在特定的场景。

如括号匹配用的是栈;银行排队用的是队列。

 

本周首先完成了括号匹配,一开始是根据书本打上关于栈的基本操作函数(入栈,出栈)

我采用的方法是顺序栈。

 

首先在主函数判断括号匹配 由 将所有的不符合的方式 修改成 !(符合的方式),可以很快写出判断条件;

其中有遇到非常愚蠢的问题就是左右括号弄翻以及采用了中文的括号。

 

在判断栈是否空的时候,由于我定义了栈顶和栈底指针 判断栈空的时候用的是(栈顶指针等于栈底指针)但是在判断是否输出条件是有点麻烦,所以改成了一个布尔类型的函数判断。

 

还有一个问题当时是因为采用的是顺序栈,在入栈的时候栈顶指针=入栈元素后,栈顶指针+1,在出栈的时候是栈顶指针先-1,再赋值出去,可是当初入栈的元素一直存在于数组中,造成当出栈两个元素时会与之前入栈的元素匹配了。

 

于是我在出栈一个元素时就把当时赋值的元素e置零,然后再次出栈。

 

银行排队:一开始用链队。发现打不下去,然后改了用顺序队的方式,然后通过定义两个队列,一个奇数队,一个偶数队,然后记下他们的长度,若非空,则每两个奇数队列输出再输出偶数队列,,再通过分别判断奇数队,偶数队是否空。银行队列的没有细致研究,这几天要研究下关于用链队的方法看看行不行。

 

结论是:对于基本操作不熟悉,需要看着书本打,希望多打多熟悉吧。

posted on 2019-03-31 23:38  ll_abc  阅读(97)  评论(4编辑  收藏  举报