1. 栈的优缺点。
答:优点:由于栈只允许栈顶进出元素,栈的顺序存储结构很方便,不存在线性表插入和删除时需要移动元素的问题。
缺点:需要先确定数组存储空间的大小,万一不够用需要编程手段来扩展数组的容量。
2.两个栈共享空间时,栈满的判断?
答:top1 + 1 = top2;
3.链栈与单链表的关系。
答:链栈的栈顶放在链表的头部,此时,单链表的头结点也就没有了意义,通常不需要头结点。
对于链栈来说,通常 存在栈满的情况,除非内存没有使用空间了。
4.对比链栈与顺序栈的应用。
答:顺序栈:要事先定好一个固定长度,优势在于存取时定位方便,可以在变化范围可控时使用;
链栈:要求每个元素都有指针域,长度是无限的,可以在元素范围不可料时使用。
5.使用递归函数时要注意些什么?
答:每个递归定义必须至少有一个条件,满足时递归不再进行,既不再引用自身而是返回值结束。
6.栈在四则运算方面的应用。
答:两步;1.将中缀表达式转换成后缀表达式(栈用来进出运算的符号);
2.将后缀表达式进行运算得出结果(栈用来进出运算的数字)。
7.循环队列满队 的条件以及队列长度的计算通用公式。
答:判断条件:(rear + 1)%QueueSize == front;
长度计算公式:(rear - front + QueueSize)% QueueSize
8.队列链式存储出队6步走。
答:1.判断队列是否为空;
2.将要删除的队列结点赋给p;
3.将要删除的队列结点的值赋给e;
4.将原队头结点后继赋给头结点后继;
5.判断队尾与队头是否重合,若是就将rear指向头结点;
6.释放p.
9.循环队列与链队列的比较。
答:从时间上,其实它们的第本操作都是常数时间,即都为o(1)的,不过循环队列是事先申请好空间,使用期间个释放,面对于链队列,每次申请和释放结点也会存在一些时间开销。如果人队出队预累,则两者还是有细微养钟。对于空间上来说,循环队列必须有一个固定的长度,所以就有了存储元素个数和空间浪费的问题。而铺队列不存在这个问题,尽管它需要个指针城,会产生一些空间上的开销,但也可以接受。所以在空间上,销队列更加灵话。
总的来说,在可以确定队列长度最大值的情况下,建汉用循环队列,如果你无法预估队列的长度时,则用链队列。