gpt4 book ai didi

java - 如何修改抽象数据类型(ADT)堆栈?

转载 作者:行者123 更新时间:2023-12-01 23:34:18 31 4
gpt4 key购买 nike

使用堆栈接口(interface)定义,什么字符串位于堆栈顶部,什么字符串位于堆栈底部?

我知道 .push 方法只是将所选项目添加到堆栈顶部,但我遇到的问题是当 Push 方法中有 pop 方法或 Push 中有 peek 方法时方法。

我还需要 String name = stringStack.pop(); 行的帮助

StackInterface<String> stringStack = new MyStack<>(); 

stringStack.push( “Jane” );
stringStack.push( “Jess” );
stringStack.push( “Jill” );
stringStack.push( stringStack.pop());
stringStack.push( stringStack.peek());
stringStack.push( “Jim” );
String name = stringStack.pop();
stringStack.push( stringStack.peek());

我希望顺序是:

顶部吉姆吉姆吉尔吉尔杰西简底部

最佳答案

在这样的情况下:

stringStack.push( stringStack.pop()); 

您只需记住,在推送值之前,push 必须知道要推送什么值。它如何知道要推送什么值?当然是评估 pop()!因此,首先弹出一个项目,然后 push 知道要推送哪个项目,然后推回到后面。换句话说,push 内的 pop 总体上对堆栈没有任何作用。

关于:

stringStack.push( stringStack.peek());

这只会查看顶部项目,然后将其插入堆栈,而不是弹出顶部项目然后将其插入堆栈。所以总的来说,这只是“复制”顶部项目。

这是每行之后堆栈的样子(左边是顶部):

stringStack.push( “Jane” ); 
// Jane
stringStack.push( “Jess” );
// Jess Jane
stringStack.push( “Jill” );
// Jill Jess Jane
stringStack.push( stringStack.pop());
// Jill Jess Jane
stringStack.push( stringStack.peek());
// Jill Jill Jess Jane
stringStack.push( “Jim” );
// Jim Jill Jill Jess Jane
String name = stringStack.pop();
// Jill Jill Jess Jane
stringStack.push( stringStack.peek());
// Jill Jill Jill Jess Jane

关于java - 如何修改抽象数据类型(ADT)堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58280711/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com