1.栈的定义是啥?
答:栈是限定只在表尾进行插入和删除操作的线性表。
2、理解栈的定义的注意点?
答:
(1)首先它是一个线性表,栈元素具有线性关系,即前驱后继关系。
(2)它的特殊之处在于限制了这个线性表的插入和删除位置,它始终只在栈顶进行。
(3)栈的插入操作,叫做进栈。
(4)栈的删除操作,叫做出栈。
3、栈和普通线性表的不同点?
答:
栈是特殊的线性表,是只允许在一端进行插入和删除操作的线性表。允许插入和删除的叫栈顶,反之则是栈底。栈的特点是:后进先出。
普通的线性表可以在头节点出进行插入删除操作。也能在线性表末端进行插入删除。
4、堆栈有哪些实际的应用?
答:
(1)用于符号匹配;
(2)用于计算代数式(也可以用二叉树解决);
(3)构造表达式(也可以用二叉树解决);
(4)用于函数调用
5、栈的基本运算有哪些?
答:
1) initstack(s),构造一个空栈;
2) stackempty(s),判栈空;
3) stackfull(s),判栈满;
4) push(s,x),进栈;
5) pop (s),退栈;
6) stacktop(s),取栈顶元素。
6、两栈共享空间能不能扩展空间?
答:
两个栈如果增加元素,就是两端点向中间延伸。并且事实上,使用这样的数据结构,通常都是当两个栈的空间需求有相反关系时,也就是一个栈增长时另一个栈在缩短的情况
7、链栈的空间利用率和顺序栈的比较?
答:
链栈能够克服用数组实现的顺序栈空间利用率不高的特点,但是需要为每个栈元素分配额外的指针空间用来存放指针域。
8、循环队列和两栈共享空间的区别?
答:
两者都是为了提高空间利用率,并且循环队列是对队列的改进,两栈是两个栈共享一块内存空间。
9、栈的“上溢”和“下溢”怎么理解?
答:
当栈满时,做进栈运算必定产生空间溢出,称“上溢”。 当栈空时,做退栈运算必定产生空间溢出,称“下溢”。上溢是一种错误应设法避免,下溢常用作程序控制转移的条件。
10、什么是队列的链式存储结构?
答:
其实就是线性表的单链表,只不过只能尾进头出而已,简称为链队列,为了操作上的方便,我们将对头指针指向链队列的头结点,而队尾指针指向终端节点,空队列时,front和rear都指向头结点。