栈和队列

来源:互联网 发布:mac未知来源 编辑:程序博客网 时间:2024/06/05 06:39

1.  栈和普通线性表的不同在哪里

栈是特殊的线性表,是只允许在一端进行插入和删除操作的线性表。允许插入和删除的叫栈顶,反之则是栈底。栈的特点是:后进先出。

普通的线性表可以在头节点出进行插入删除操作。也能在线性表末端进行插入删除。

         

2. 两栈共享空间在实际中应用在哪里         

使用过程中给每个栈分配足够的空间是不太现实的,使用栈的时候,我们也不能保证栈有足够的空间。另外,栈是一个动态的存储结构,各个栈的实际大小在使用的过程中都会发生变化的。有时候其中一个已经上溢了,而另外一个还没有怎么使用,这样必然会造成空间的利用率降低。

共享空间可以解决一定的问题

  

3.  链栈的空间利用率比顺序栈高吗

链栈能够克服用数组实现的顺序栈空间利用率不高的特点,但是需要为每个栈元素分配额外的指针空间用来存放指针域。

            

4. 迭代具体和栈的区别在哪里

栈:就是在过程或函数里面调用自身

迭代:利用变量的原值推算出变量的新值,如果递归是自己调用自己的话,迭代就是A不停地调用B      

递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换。

能用迭代的不用递归,递归调用函数,浪费空间,而且递归太深容易造成堆栈的溢出

                             

5.  堆栈有哪些实际应用

堆栈:1.用于符号匹配;2.用于计算代数式(也可以用二叉树解决);3.构造表达式(也可以用二叉树解决);4.用于函数调用

      

6. 队列能不能空间扩展

可以将elemtype 定义为指针类型*Elem,而非数组,这样就不需要对循环队列设置最大值,而是给循环队列初始值,通过C语言提供的动态内存函数malloc,给该指针分配存储空间,若在程序执行中出现队满的情况,可以通过realloc函数将该空间进行扩充。             

                

7.  循环队列和两栈共享空间的异同

都是为了提高空间利用率

循环队列是对队列的改进,两栈是两个栈共享一块内存空间

         

                     

8. 两栈共享空间能不能扩展空间

两个栈如果增加元素,就是两端点向中间延伸。

事实上,使用这样的数据结构,通常都是当两个栈的空间需求有相反关系时,也就是一个栈增长时另一个栈在缩短的情况

       

9. 队列有哪些实际应用

  在需要公平且经济地对各种自然或社会资源做管理或分配的场合,队列都可大显身手。计算机及其网络自身内部的各种计算资源,无论是多进程共享的CPU时间,还是多用户共享的打印机,都需要借助队列结构实现合理和优化的分配

 

10. 前缀表达式式和中缀,后缀的区别

前缀表达式是指将运算符写在前面,操作数写在后面不包含括号的表达式,

后缀表达式与之相反,是指运算符写在操作数后面的不包含括号的算术表达式,

中缀表达式就是常用的将操作符放在操作数中间的算数表达