为什么我们需要在队列或堆栈中支持函数isFull()?

时间:2014-01-03 14:51:13

标签: function stack queue

为什么我们需要在队列或堆栈中支持函数isFull()?

我们可以将数据存储在磁盘上并加载我们可以在内存中加载的任何大小

换句话说,如果我们有非常大的磁盘,我们怎么会耗尽内存?

1 个答案:

答案 0 :(得分:1)

基本上,它与isEmpty()函数的作用相同。虽然你可以使用

    Stack s1 = new Stack() ; 
    if(s1.size == 0)
    {
        //  Do something.
    }

假设您使用任何语言(如C#)将堆栈实现为数组。现在,因为在创建堆栈后无法修改堆栈容量。在将更多元素推入堆栈之前,您需要检查堆栈是否已满 例如: -

    Stack s1 = new Stack() ;
    while(!(s1.isFull()&&s2.isEmpty()))
    {
       int temp = s2.pop() ;  // s2 is another stack.
       s1.push(temp)
    }

在这里,您希望将尽可能多的s2元素推送到另一个堆栈

否则,您将需要: -

    Stack s1 = new Stack() ; 
    while(!s2.isEmpty())
    {
       s1.push(s2.pop()) ;  // I am assuming that s2.pop() returns the popped element.
    }

在这种情况下 如果元素的数量大于s1的容量,则将元素推送到s1将抛出异常。

另一种真实的游戏体验,假设您制作解谜游戏并且不想给用户提供超过25个动作来解决拼图,并且您将拼图的状态存储在堆栈中。因此,您可以使用isEmpty()功能检查用户是否即将超过允许的移动次数 虽然可以有其他方法来做同样的事情,但您也可以使用isEmpty()函数来做同样的事情。

    while(!s1.isEmpty())
    {
        // wait for the user to make move.
    }