早教吧 育儿知识 作业答案 考试题库 百科 知识分享

求一个删除栈S中所有结点的算法voidClearStack,并计算所删去的结点个数。

题目详情
求一个删除栈S中所有结点的算法void ClearStack,并计算所删去的结点个数。
▼优质解答
答案和解析
使用面向对象语言设计的好处就是你不用去管栈里面是使用什么机制实现的,你只要组合它提供的几个方法就能实现。照你所说的要求,有一个很简单的办法,就是使用两个办法,一个是获取当前栈中的元素个数,就得到了个数,再使用第二个方法,是清除栈中的所有元素。就达到了你题目的要求。一般栈类都有这两个方法。如果没有,那也没关系,最最基本的栈,它至少也有进出栈方法,和判断栈满栈空方法,使用出栈方法结合判断栈空方法也能实现你的要求。由于我不知道你使用的是什么语言,我就给出个伪代码吧。(方法名和对象类型名你照套进去就行了,你都玩到栈了,这个肯定不是问题了。)/** * 删除栈中所有节点,并返回删去节点个数。 * 参数:stact ,要清空的栈对象 * 返回:删除的节点数目
*/public int clearStack(Stack stack){ int count = 0; // 如果栈未空,执行 while(!stack.是否空()){ // 出栈,如果需要获取出栈的值,可以给一个变量来接受,这里没有要求,所以直接出栈。 stack.出栈(); // 计数器自增 count++; } // 返回删除节点数目 return count;}调用改方法,执行完毕时,传入的栈对象 stack 将被清空,并且方法会返回删除节点数目。希望我回答的正是你所问的。