下面关于“栈”的描述,正确的是( B )

A. 由于数组的随机访问特性,顺序栈比链栈的操作更加灵活

B. 为了方便出栈、进栈等操作,通常将单链表的表头做为栈顶

C. 顺序栈比链栈更加节约空间

D. 消除递归必须要使用栈


A. 顺序栈查询速度快,链栈添加删除数据更快。
B. 进栈、出栈等操作都在栈顶进行,而单链表中,在单链表的头部插入或删除一个元素最为方便。采用头插法生成的链表,数据元素刚好符合栈的特征,先进后出。
C. 顺序栈是静态分配的,而链栈是动态分配的,因此链栈可以将很多零碎的空间利用起来,容量可变,节省空间。顺序栈固定内存空间,容量不变。
D. 比如求阶乘的算法,既可以用递归实现,也可以用循环实现。不是所有的递归程序都需要栈来保护现场,另外一些需要栈保存的也可以用队列等来替代。