我用以下方法制作了我自己的Deque类:
Deque#pushLeft(E e), pushRight(E e), popLeft() and popRight(). 是否有可能建立一种可以改变Deque的任何元素的方法?我想从左到右编辑它们。所以editRight(index, E newElement)和editLeft也是一样的。
我怎么开始这么做?我需要用个磁铁吗?
发布于 2015-09-22 11:21:26
您已经将Deque实现为一个双链接列表。支持editLeft和editRight的最简单方法是沿着链接前进,直到到达希望更改的节点为止。
类似于:
public void editLeft(int index, Item item) {
Node node = right;
while (node != null && index > 0) {
node = node.prev;
index--;
}
if (node != null) {
node.item = item;
} else {
throw new IllegalRangeException("Attempt to edit value with illegal index");
}
}发布于 2015-09-22 11:13:10
Deque是ADT,它可以通过链表或数组作为数据结构来实现。您的答案取决于用于存储elements.and的数据结构的类型,我还建议您实现一个peek操作,它将为您提供编辑元素的引用,建议.peek操作可用于其他高级操作,如delete/contains等。
https://stackoverflow.com/questions/32715016
复制相似问题