gpt4 book ai didi

java - 如何通过线性节点中的索引使元素出列

转载 作者:行者123 更新时间:2023-12-01 21:48:22 27 4
gpt4 key购买 nike

如果有人可以提供帮助,我很难找到让该方法删除特定索引上的元素的算法

我尝试实现下面的一些,但在逻辑上可能是错误的我还得到了 javadoc,这样你就知道算法要求什么

 /**
* Removes and returns the element that is at place x in the queue.
* Precondition: x must be less than 5, x must be less than size Note:
* indexing from 0: 0 == front element, 1 == second element, etc.
*
* @param x the passed in index of the element to be removed
* @return the element removed from the queue
* @throws EmptyCollectionException if the queue is empty
* @throws InvalidArgumentException if x > 4, or x > size of collection
*
*/
//@Override
public T dequeue(int x) throws EmptyCollectionException, InvalidArgumentException {
// exception throw if queue is empty
if (numNodes == 0) {
throw new EmptyCollectionException("Empty Collection");
}
// exception throw if x > 4 or size
if (x > 4 || x > size()) {
throw new InvalidArgumentException("Invalid x");
}
T result = null;
LinearNode<T> temp = front;
int count;
while (temp != null) {
result = temp.getElement();
if (numNodes == 1) {

front = null;
back = null;
numNodes--;
return result;
}
if (numNodes > 1) {
if (count == x) {
result = result.setNext();
}
x++;
front = temp.getNext();
front.setPrev(null);
numNodes--;
return result;
}
}

删除索引x的节点

最佳答案

假设您的“LinearNode”类的工作方式类似于 LinkedList 并且具有 getPrevious() 和 getNext() 方法:

public T dequeue(int idx) {
// Any other bounds checks go here
LinearNode<T> curNode = front;
for(int i = 0; i < idx; i++) {
if(curNode.getNext() != null) {
curNode = curNode.getNext();
} else {
// idx is out of bounds
throw new InvalidArgumentException("Index is out of bounds");
}
}
LinearNode<T> previousNode = curNode.getPrevious();
LinearNode<T> nextNode = curNode.getNext();
if(previousNode != null) {
previousNode.setNext(nextNode);
}
if(nextNode != null) {
nextNode.setPrevious(previousNode);
}
if(curNode.equals(front)) {
front = nextNode;
}
if(curNode.equals(back)) {
back = previousNode;
}
return curNode.getElement();
}

关于java - 如何通过线性节点中的索引使元素出列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58772364/

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