java - 删除队列的中间编号
问题描述
我需要创建一个方法来删除链接队列的中间编号。[1,2,3,4,5] 变成 [1,2,4,5] 如果队列是偶数,则向下舍入并从那里删除。所以 [1,2,3,4] 变成了 [1,3,4]。
我不确定如何删除中间的数字,然后再添加我删除的其他数字。
这是我目前拥有的。
...
public class LinkedQueue {
Node head;
Node front;
Node rear;
int count;
int elements;
public void enqueue(int numEnqueue) {
Node node = rear;
rear=new Node();
rear.numEnqueue=numEnqueue;
rear.next=null;
if (front==null)
front = rear;
else
node.next = rear;
count++;
elements=count;
}
//
public void dequeue() {
for(int i=0;i<6;i++) {
int numEnqueue = front.numEnqueue;
front = front.next;
count--;
System.out.print("\nDequeueing: "+numEnqueue);
}
}
public void show() {
Node node = front;
System.out.print("\n\nQueued linked elements: ");
while(node!=null) {
System.out.print(node.numEnqueue+" ");
node=node.next;
}
}
public void removeMiddle() {
int half = 0;
half=elements/2;
for (int i=0;i<half;i++) {
int numEnqueue = front.numEnqueue;
front = front.next;
}
}
}
... 驱动程序代码
...
public class Driver {
public static void main(String[] args) {
LinkedQueue link=new LinkedQueue();
link.enqueue(1);
link.enqueue(7);
link.enqueue(3);
link.enqueue(4);
link.enqueue(9);
link.enqueue(2);
link.show();
link.dequeue();
link.enqueue(1);
link.enqueue(7);
link.enqueue(3);
link.enqueue(4);
link.enqueue(9);
link.enqueue(2);
link.removeMiddle();
link.show();
}
}
...节点代码
public class Node {
int numEnqueue;
Node next;
}
解决方案
由于这是家庭作业,我将提供伪代码/建议:
- 给定一个长度队列
n
,您需要删除元素(n - 1) / 2
(int
算术会为您截断除法的小数部分)。 - 在一个迭代次数的循环中
(n - 1) / 2
,从根节点开始,每次迭代都前进到下一个节点 - 删除循环结束的节点
实际的解决方案比这稍微复杂一些,您可能会发现删除下一个节点更容易,因为每个节点都没有对其前任的引用。在这种情况下,迭代到根节点将被视为循环的一次迭代。
推荐阅读
- angular - ng-template 中的 Angular ngForm
- ios - XMPPFRAMEWORK - 使用 xmppMessageArchiveManagement 时如何从 Xmppmessage 获取消息正文
- python - 我怎样才能发送一个十六进制数字,然后再进行必要的处理?
- javascript - 检查两个时间戳之间的当前时间戳
- javascript - Angular 9:如何使用 HttpInterceptor 显示请求的堆栈跟踪?
- sql - 如何在 SQL 中使用 groupby 聚合函数
- java - 如何使用 armed bear common lisp 创建一个 jar?
- java - 无法在 Visual Studio Code Java 扩展包中将 jar 添加为库
- python - 在 plotly.express 中添加悬停文本
- node.js - 我可以对通过 Web Socket 与我的 ReactJS 连接的 Node 服务器进行 API 调用吗?