数据结构栈和队列

来源:互联网 发布:js替换标签 编辑:程序博客网 时间:2024/06/15 15:30

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都指向头结点。