如何在Java中实现有界堆栈
我需要帮助的是:如何在Java中实现有界堆栈,java,stack,Java,Stack,我需要帮助的是: 什么是使isEmpty()和isFull()方法返回一个答案来告诉我堆栈是空的还是满的正确代码 我需要将我使用的堆栈设置为五(5)个大小(堆栈可以容纳5个整数) 我需要在push()和pop()方法中添加异常,当堆栈已满时不允许使用push,当堆栈为空时不允许使用pop import java.util.ArrayList; 导入java.util.List; 公共类整数堆栈{ 私有列表栈; 公共整数堆栈(整数大小){ 堆栈=新阵列列表(大小); } /*方法来推动堆栈*/
import java.util.ArrayList;
导入java.util.List;
公共类整数堆栈{
私有列表栈;
公共整数堆栈(整数大小){
堆栈=新阵列列表(大小);
}
/*方法来推动堆栈*/
公共无效推送(int i){
叠加(0,i);
}
/*方法来弹出堆栈*/
公共int-pop(){
如果(!stack.isEmpty()){
int i=stack.get(0);
堆栈。移除(0);
返回i;
}否则{
返回-1;//或任何无效值
}
}
/*方法查看堆栈*/
公共int peek(){
如果(!stack.isEmpty()){
返回stack.get(0);
}否则{
返回-1;//或任何无效值
}
}
/*确定堆栈是否为空*/
公共布尔值为空(){
stack.isEmpty();
}
/*确定堆栈是否已满*/
公共布尔值isFull(){
stack.isFull();
}
/*确定堆栈的大小*/
公共整数大小(){
if(stack.isEmpty())
返回0;
其他的
返回stack.size();
}
}
1。
如注释中所述,看起来您只是缺少isEmpty()函数上的return
关键字:
/* determine if the stack is empty */
public boolean isEmpty() {
return stack.isEmpty();
}
但是,对于isFull()
函数,List
类上没有isFull()
函数,您必须自己实现它。您必须跟踪通过构造函数传入的整数,以便将其与存储在对象中的列表大小进行比较
二,。
您是应该允许此对象的用户指定他们想要的任何大小
,还是应该始终有5个整数限制
三,。
您可能想在上阅读Java文档的这一部分。在询问之前,您是否真的看了一下如何做?看起来你只是复制粘贴了一个你没有得到的代码
import java.util.ArrayList;
import java.util.List;
public class IntegerStack {
private int max_size;
private List<Integer> stack;
public IntegerStack(int size) {
max_size = size;
stack = new ArrayList<Integer>(size);
}
/* method to push the stack */
public void push(int i) {
stack.add(0, i);
}
/* method to pop the stack */
public int pop() {
if (!stack.isEmpty()) {
int i = stack.get(0);
stack.remove(0);
return i;
} else {
return -1;// Or any invalid value
}
}
/* method to peek at the stack */
public int peek() {
if (!stack.isEmpty()) {
return stack.get(0);
} else {
return -1;// Or any invalid value
}
}
/* determine if the stack is empty */
public boolean isEmpty() {
return stack.isEmpty();
}
/* determine if the stack is full */
public boolean isFull() {
//go through all your stack and see if there are things not set to get if it's full.
}
/* determine the size of the stack */
public int size() {
if (stack.isEmpty())
return 0;
else
return stack.size();
}
}
import java.util.ArrayList;
导入java.util.List;
公共类整数堆栈{
私有整数最大值;
私有列表栈;
公共整数堆栈(整数大小){
最大尺寸=尺寸;
堆栈=新阵列列表(大小);
}
/*方法来推动堆栈*/
公共无效推送(int i){
叠加(0,i);
}
/*方法来弹出堆栈*/
公共int-pop(){
如果(!stack.isEmpty()){
int i=stack.get(0);
堆栈。移除(0);
返回i;
}否则{
返回-1;//或任何无效值
}
}
/*方法查看堆栈*/
公共int peek(){
如果(!stack.isEmpty()){
返回stack.get(0);
}否则{
返回-1;//或任何无效值
}
}
/*确定堆栈是否为空*/
公共布尔值为空(){
返回stack.isEmpty();
}
/*确定堆栈是否已满*/
公共布尔值isFull(){
//检查你所有的堆栈,看看是否有未设置的东西,如果它已满。
}
/*确定堆栈的大小*/
公共整数大小(){
if(stack.isEmpty())
返回0;
其他的
返回stack.size();
}
}
创建对象时,将5作为参数。您可能需要对代码进行其他更改;)
你自己试试看,你会有更大的提高:D你应该正确地缩进你的代码,当你错过return关键字时,阅读它确实很困难。返回stack.isEmpty();返回stack.isFull();如果这是一个堆栈,为什么在推送时必须提供一个位置?您还可以参考java.util.Stack类以获得更多帮助。推送方法是错误的。列表界面没有提供
isFull()
方法。我没有说这是答案,而是找到答案的一种方法;)这家伙似乎一点也没有寻找答案,这就是为什么;)即使您通过存储max_size
属性给出了有用的提示,也没有理由提供错误的代码(对于push
方法)。我不想给出错误的代码,对此我很抱歉^^^我将其更改回了原始版本
import java.util.ArrayList;
import java.util.List;
public class IntegerStack {
private int max_size;
private List<Integer> stack;
public IntegerStack(int size) {
max_size = size;
stack = new ArrayList<Integer>(size);
}
/* method to push the stack */
public void push(int i) {
stack.add(0, i);
}
/* method to pop the stack */
public int pop() {
if (!stack.isEmpty()) {
int i = stack.get(0);
stack.remove(0);
return i;
} else {
return -1;// Or any invalid value
}
}
/* method to peek at the stack */
public int peek() {
if (!stack.isEmpty()) {
return stack.get(0);
} else {
return -1;// Or any invalid value
}
}
/* determine if the stack is empty */
public boolean isEmpty() {
return stack.isEmpty();
}
/* determine if the stack is full */
public boolean isFull() {
//go through all your stack and see if there are things not set to get if it's full.
}
/* determine the size of the stack */
public int size() {
if (stack.isEmpty())
return 0;
else
return stack.size();
}
}