第三章总结
第三章主要学习了栈和队列的表示以及基本操作,栈和队列都是操作受限的表,栈的特点是先进先后出,队列是先进先出,在栈与递归中,我学习到递归算法虽然结构清晰可读性强算法简单,但时间和空间复杂度都很大,所以好的方式是用迭代。循环队列:使用循环队列可以避免假溢出的问题,rear=(rear+1)%MAXSIZE,但这时队列的最大空间是MAXSIZE-1。
作业的心得体会:
这次作业和时间暴露出一个很明显的的问题,程序的封装性。
if(i==1&&S.base==S.top) {
cout<<"yes";
}else{
cout<<"no";
} 做作业时我在主程序中直接调用了栈的操作来判断栈空,正确的做法时将栈空的判断写成一个函数,再进行调用。
int emptysqstack(sqstack s)//判断栈空
{
if(s.top==s.base)
{
return 1;
}
else return 0;
}
if(i==1&&emptysqstack(S)==1) {
cout<<"yes";
}else{
cout<<"no";
}
}。封装可以使程序的结构更清晰,可读性强,有利于标注和debug。
上次确定的目标及接下来的目标:
上次的目标是提高独自完成代码的能力,但是在不接助书本或网络的情况下编码的效率很低,以后我会先借助书本的代码完成作业,然后在没有其他参考的情况下自己再将代码打出来。