第3章内容小结
1.栈和队列:都是操作受限的线性表,插入与删除的时间复杂度都是O(1),在空间复杂度上两者也一样,但删除数据元素的位置不同,栈的删除操作在表尾进行,队列的删除操作在表头进行
2.(PTA选择题出现)共享栈:利用栈底位置相对不变的特性,可以让两个顺序栈共享一个一维数据空间,将两个栈的 栈底分别设置在共享空间的两端,两个栈顶向共享空间的中间延伸。两个栈的栈顶指针都指向栈顶元素,top1=-1 时1号桟为空,top2=MAXSIZE时2号栈为空;仅当两个栈顶指针相邻(top2-top1=1) 时,判断为栈满
完成作业时一开始我是按照书本上的方法用switch语句,后来老师在课堂上分析了方法给了另一种思路,再打代码就比较容易了。用老师讲的方法做时,一开始只分了左边括号、右边括号的情况,没有考虑到不是括号的字符读取情况,造成了死循环,所以运行的时候总显示超时,一开始我把while循环改成了if,不知道是没能遍历整个字符串导致的循环没法结束,后来请教之后才知道是造成了死循环这种情况。而且一开始的书本上的方法因为运行超时就没有再管它,但是这样就放一边不去解决就只是打字练习了没有意义,所以要多问,注释详细也可以检查出一些问题。实践题我一开始是想用flag标记,输出两个奇数后令flag=1,输出一个偶数后令flag=0循环输出,但是这种只适用于刚好可以2奇1偶的情况,而且最后一个数后面的空格也没有办法解决。后来我将奇数存在一个队列里,偶数一个队列,再按2奇1偶的顺序(不能2奇1偶就先放奇数再放剩下的偶数)放在一个数组里,其中参考了网上一些方法也问了同学。一开始我觉得直接用两个数组就可以解决,但是这一章学习了队列就没有尝试了。我觉得请教别人是一种很好的解决方法,虽然现在问的还不多,但希望自己之后能发现问题,主动提出问题,更主动学习。