【发布时间】:2014-01-21 06:42:59
【问题描述】:
为什么我们需要在队列或堆栈中支持函数isFull()?
我们可以将数据存储在磁盘上并加载我们可以加载到内存中的任何大小
换句话说,如果我们有非常大的磁盘,我们怎么会耗尽内存?
【问题讨论】:
为什么我们需要在队列或堆栈中支持函数isFull()?
我们可以将数据存储在磁盘上并加载我们可以加载到内存中的任何大小
换句话说,如果我们有非常大的磁盘,我们怎么会耗尽内存?
【问题讨论】:
基本上,它的用途与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.
}
【讨论】: