如何从堆栈实现中删除(弹出)元素?
How to remove(pop) element from a stack implementation?
目前正在做我的家庭作业,一个在动态数组的支持下制作堆栈的模拟代码。
方法 pop()
不起作用,因为它是函数,我写了一些代码,但我需要完成。我的堆栈应该是这样模拟的,你插入一个数字来调用 top 然后删除那个数字(top)。
import java.util.NoSuchElementException;
public class MyStack implements IntStack {
int[] heltal;
public MyStack() {
heltal = new int[0];
}
public void push(int tal) {
int[] temp = new int[heltal.length + 1];
for (int x = 0; x < heltal.length; x++) {
temp[x] = heltal[x] + tal;
}
heltal = temp;
for (int i = 0; i < heltal.length; i++) {
heltal[i] = tal;
}
}
@Override
public int pop() {
if (Isempty()) {
throw new NoSuchElementException("The stack is empty, there is nothing to pop");
} else {
int[] temp = new int[heltal.length - 1];
for (int x = 0; x < heltal.length - 1; x++) {
temp[x] = heltal[x];
}
int etttal = heltal[0];
heltal = temp;
return etttal;
}
}
@Override
public int peek() {
if (Isempty()) {
throw new NoSuchElementException("The stack is empty");
} else {
return heltal[0];
}
}
public boolean Isempty() {
return heltal.length == 0;
}
}
您似乎使这比要求的更困难。对于堆栈实现,push
、pop
、peek
等只不过是 return 或存储值的索引操纵器。堆栈可以由数组或列表支持。 pushing
等是抽象术语。所以当你压入一个值时,你不需要一个一个地复制所有的东西。只需将它添加到数据结构的末尾即可。
- pop - 检查索引,如果有效,return 当前索引处的元素,更新索引。
- push - 将值存储在下一个位置。可能是 index + 1 但这取决于你如何实现它。
- 查看 - return 最高值(在索引处)但不更新索引。
如果您使用数组,则需要添加方法来增加它的容量。
有关详细信息,请查看 Stack
这是一个简单的推送方法,由一个名为 stack
的 array
和一个 index
字段支持。它假定正在使用 ints
。
public void push(int v) {
if (index == stack.length-1) {
// no more room, increase array size
// while retaining current values.
}
stack[++index] = v;
}
目前正在做我的家庭作业,一个在动态数组的支持下制作堆栈的模拟代码。
方法 pop()
不起作用,因为它是函数,我写了一些代码,但我需要完成。我的堆栈应该是这样模拟的,你插入一个数字来调用 top 然后删除那个数字(top)。
import java.util.NoSuchElementException;
public class MyStack implements IntStack {
int[] heltal;
public MyStack() {
heltal = new int[0];
}
public void push(int tal) {
int[] temp = new int[heltal.length + 1];
for (int x = 0; x < heltal.length; x++) {
temp[x] = heltal[x] + tal;
}
heltal = temp;
for (int i = 0; i < heltal.length; i++) {
heltal[i] = tal;
}
}
@Override
public int pop() {
if (Isempty()) {
throw new NoSuchElementException("The stack is empty, there is nothing to pop");
} else {
int[] temp = new int[heltal.length - 1];
for (int x = 0; x < heltal.length - 1; x++) {
temp[x] = heltal[x];
}
int etttal = heltal[0];
heltal = temp;
return etttal;
}
}
@Override
public int peek() {
if (Isempty()) {
throw new NoSuchElementException("The stack is empty");
} else {
return heltal[0];
}
}
public boolean Isempty() {
return heltal.length == 0;
}
}
您似乎使这比要求的更困难。对于堆栈实现,push
、pop
、peek
等只不过是 return 或存储值的索引操纵器。堆栈可以由数组或列表支持。 pushing
等是抽象术语。所以当你压入一个值时,你不需要一个一个地复制所有的东西。只需将它添加到数据结构的末尾即可。
- pop - 检查索引,如果有效,return 当前索引处的元素,更新索引。
- push - 将值存储在下一个位置。可能是 index + 1 但这取决于你如何实现它。
- 查看 - return 最高值(在索引处)但不更新索引。
如果您使用数组,则需要添加方法来增加它的容量。
有关详细信息,请查看 Stack
这是一个简单的推送方法,由一个名为 stack
的 array
和一个 index
字段支持。它假定正在使用 ints
。
public void push(int v) {
if (index == stack.length-1) {
// no more room, increase array size
// while retaining current values.
}
stack[++index] = v;
}